jodit
Version:
Jodit is an awesome and useful wysiwyg editor with filebrowser
230 lines (215 loc) • 10.6 kB
JavaScript
/*!
* jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
* Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
* Version: v4.12.2
* Url: https://xdsoft.net/jodit/
* License(s): MIT
*/
;
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(self, function() {
return (self["webpackChunkjodit"] = self["webpackChunkjodit"] || []).push([[486],{
/***/ 96206:
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ Debug: function() { return /* binding */ Debug; }
/* harmony export */ });
/* harmony import */ var _swc_helpers_call_super__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(69262);
/* harmony import */ var _swc_helpers_class_call_check__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(73104);
/* harmony import */ var _swc_helpers_create_class__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(53429);
/* harmony import */ var _swc_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(34918);
/* harmony import */ var _swc_helpers_wrap_native_super__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(38574);
/* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(81937);
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(23211);
/* harmony import */ var jodit_core_helpers_html_strip_tags__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(22852);
/* harmony import */ var jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(18855);
/*!
* Jodit Editor (https://xdsoft.net/jodit/)
* Released under MIT see LICENSE.txt in the project root for license information.
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
*/ /**
* [[include:plugins/debug/README.md]]
* @packageDocumentation
* @module plugins/debug
*/
var Debug = /*#__PURE__*/ function(Plugin) {
"use strict";
(0,_swc_helpers_inherits__WEBPACK_IMPORTED_MODULE_3__._)(Debug, Plugin);
function Debug() {
(0,_swc_helpers_class_call_check__WEBPACK_IMPORTED_MODULE_1__._)(this, Debug);
return (0,_swc_helpers_call_super__WEBPACK_IMPORTED_MODULE_0__._)(this, Debug, arguments);
}
(0,_swc_helpers_create_class__WEBPACK_IMPORTED_MODULE_2__._)(Debug, [
{
key: "afterInit",
value: function afterInit(jodit) {
var mirror = jodit.create.div('jodit-debug');
var tree = jodit.create.div('jodit-debug__tree');
var events = jodit.create.div('jodit-debug__events');
var clear = jodit.create.div('jodit-debug__events-clear', [
'x'
]);
var sel = jodit.create.div('jodit-debug__sel');
mirror.appendChild(tree);
mirror.appendChild(events);
events.appendChild(clear);
mirror.appendChild(sel);
clear.addEventListener('click', function() {
events.innerHTML = '';
events.appendChild(clear);
});
jodit.workplace.appendChild(mirror);
var allEvents = [
'activate',
'afterInit',
'beforeactivate',
'beforeblur',
'beforedeactivate',
'beforefocus',
'beforeinput',
'blur',
'change',
'click',
'compositionend',
'compositionstart',
'compositionupdate',
'contextmenu',
'copy',
'cut',
'dblclick',
'deactivate',
'focus',
'focusin',
'focusout',
'focusout',
'input',
'keydown',
'keypress',
'keyup',
'mousedown',
'mouseup',
'paste',
'selectionchange',
'selectionstart',
'dragstart',
'drop',
'dragover',
'resize touchstart touchend',
'updateDebug',
'beforeCommand',
'afterCommand',
'wheel'
];
function updateTree() {
var range = jodit.selection.range;
tree.innerHTML = render(jodit.editor, 0, range);
sel.innerHTML = "start ".concat(range.startContainer.nodeName, " ").concat(range.startOffset, "<br>end ").concat(range.endContainer.nodeName, " ").concat(range.endOffset);
}
function onSomeEvent(e) {
var event = jodit.e.current;
var div = jodit.create.div();
div.innerHTML = "<span>".concat(new Date().toLocaleTimeString(), "</span> ").concat(renderEvent(event, e));
events.appendChild(div);
events.scrollTop = events.scrollHeight;
jodit.async.setTimeout(function() {
events.children.length > 100 && events.removeChild(events.children[0]);
}, 100);
}
function renderEvent(event, e) {
var result = [
event !== null && event !== void 0 ? event : e.type
];
switch(event){
case 'beforeCommand':
case 'afterCommand':
result.push("<span>".concat(e.toString(), "</span>"));
break;
case 'keydown':
case 'keyup':
case 'keypress':
if (e.shiftKey && e.key !== 'Shift') {
result.push('Shift+');
}
if (e.ctrlKey && e.key !== 'Control') {
result.push('Ctrl+');
}
if (e.altKey && e.key !== 'Alt') {
result.push('Alt');
}
result.push("".concat(e.key));
break;
}
if (e && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_6__.Dom.isNode(e.target)) {
result.push("<span>".concat(e.target.nodeName, "</span>"));
}
return result.join(' ');
}
jodit.e.on('keydown keyup keypress change afterInit updateDebug', updateTree).on(allEvents, onSomeEvent).on(jodit.od, 'selectionchange', onSomeEvent).on(jodit.od, 'selectionchange', updateTree);
}
},
{
key: "beforeDestruct",
value: function beforeDestruct(jodit) {}
}
]);
return Debug;
}((0,_swc_helpers_wrap_native_super__WEBPACK_IMPORTED_MODULE_4__._)(jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_8__.Plugin));
function renderText(elm, range) {
if (!elm.nodeValue) {
return "<span style='color:red'>empty</span>";
}
var value = elm.nodeValue;
if (range.collapsed) {
if (elm === range.startContainer) {
value = value.slice(0, range.startOffset) + '%CURSOR%' + value.slice(range.startOffset);
}
} else {
if (elm === range.startContainer && elm === range.endContainer) {
value = value.slice(0, range.startOffset) + '%START-CURSOR%' + value.slice(range.startOffset, range.endOffset) + '%END-CURSOR%' + value.slice(range.endOffset);
} else if (elm === range.startContainer) {
value = value.slice(0, range.startOffset) + '%CURSOR%' + value.slice(range.startOffset);
} else if (elm === range.endContainer) {
value = value.slice(0, range.endOffset) + '%CURSOR%' + value.slice(range.endOffset);
}
}
return (0,jodit_core_helpers_html_strip_tags__WEBPACK_IMPORTED_MODULE_7__.stripTags)(value.replace((0,jodit_core_constants__WEBPACK_IMPORTED_MODULE_5__.INVISIBLE_SPACE_REG_EXP)(), 'INV')).replace(/%CURSOR%/, '<span class="jodit-debug__tree-cursor">|</span>').replace(/%START-CURSOR%/, '<span class="jodit-debug__tree-cursor">|').replace(/%END-CURSOR%/, '|</span>');
}
function render(elm, level, range) {
var _window_getSelection;
var isSelected = (_window_getSelection = window.getSelection()) === null || _window_getSelection === void 0 ? void 0 : _window_getSelection.containsNode(elm);
var content = [
'<span class="jodit-debug__tree-elm-name">'.concat(elm.nodeName, "</span>"),
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_6__.Dom.isText(elm) ? "- ".concat(renderText(elm, range)) : ''
].map(function(i) {
return i.trim();
}).filter(Boolean);
return '<div class="'.concat(isSelected ? 'jodit-debug__tree-element_selected' : '', "\" style='padding-left: ").concat(level * 5, "px'>\n ").concat(content.join(' '), "\n ").concat(Array.from(elm.childNodes).map(function(ch, index) {
var result = [];
if (range.startContainer === elm && index === range.startOffset) {
result.push('<span class="jodit-debug__tree-cursor">|</span>');
}
result.push(render(ch, level + 1, range));
if (range.endContainer === elm && index === range.endOffset) {
result.push('<span class="jodit-debug__tree-cursor">|</span>');
}
return result;
}).flat().join(''), "\n</div>");
} // pluginSystem.add('debug', Debug);
/***/ })
},
/******/ function(__webpack_require__) { // webpackRuntimeModules
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
/******/ var __webpack_exports__ = (__webpack_exec__(96206));
/******/ return __webpack_exports__;
/******/ }
]);
});