@ckeditor/ckeditor5-engine
Version:
The editing engine of CKEditor 5 – the best browser-based rich text editor.
123 lines (122 loc) • 5.03 kB
JavaScript
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
/**
* Note: This package is used only internally for debugging purposes and should not be used
* in other environments. It uses a few special methods not existing in the default
* building process. That is also why there are no tests for this file.
*
* @module engine/dev-utils/utils
*/
// @if CK_DEBUG_TYPING // const { debounce } = require( 'es-toolkit/compat' );
/**
* Helper function, converts a map to the 'key1="value1" key2="value1"' format.
*
* @param map Map to convert.
* @returns Converted map.
* @internal
*/
export function convertMapToTags(map) {
let string = '';
for (const entry of map) {
string += ` ${entry[0]}=${JSON.stringify(entry[1])}`;
}
return string;
}
/**
* Helper function, converts a map to the `{"key1":"value1","key2":"value2"}` format.
*
* @param map Map to convert.
* @returns Converted map.
* @internal
*/
export function convertMapToStringifiedObject(map) {
const obj = {};
for (const entry of map) {
obj[entry[0]] = entry[1];
}
return JSON.stringify(obj);
}
const treeDump = Symbol('_treeDump');
const maxTreeDumpLength = 20;
/**
* Helper function that stores the `document` state for a given `version`.
*
* @internal
*/
export function dumpTrees(document, version) {
console.log(document, version);
let string = '';
for (const root of document.roots) {
string += root.printTree() + '\n';
}
document[treeDump][version] = string.substr(0, string.length - 1); // Remove the last "\n".
const overflow = document[treeDump].length - maxTreeDumpLength;
if (overflow > 0) {
document[treeDump][overflow - 1] = null;
}
}
/**
* Helper function that initializes document dumping.
*
* @internal
*/
export function initDocumentDumping(document) {
document[treeDump] = [];
}
/**
* Helper function that logs document for the given version.
*
* @internal
*/
export function logDocument(document, version) {
console.log('--------------------');
if (document[treeDump][version]) {
console.log(document[treeDump][version]);
}
else {
console.log('Tree log unavailable for given version: ' + version);
}
}
// @if CK_DEBUG_TYPING // export const _debouncedLine = debounce( () => {
// @if CK_DEBUG_TYPING // console.log(
// @if CK_DEBUG_TYPING // '%c───────────────────────────────────────────────────────────────────────────────────────────────────────',
// @if CK_DEBUG_TYPING // 'font-weight: bold; color: red'
// @if CK_DEBUG_TYPING // );
// @if CK_DEBUG_TYPING // }, 300 );
// @if CK_DEBUG_TYPING // export function _buildLogMessage( context, className, message = '', ...rest ) {
// @if CK_DEBUG_TYPING // const editor = _findAllEditorInstances().find( editor => (
// @if CK_DEBUG_TYPING // _getLogNodes( editor ).includes( context )
// @if CK_DEBUG_TYPING // ) );
// @if CK_DEBUG_TYPING // const editorName = editor && Object.getPrototypeOf( editor ).constructor.name;
// @if CK_DEBUG_TYPING // const editorPrefix = editor ? `${ editorName }-${ editor.id.slice( -4 ) } ` : 'UNKNOWN ';
// @if CK_DEBUG_TYPING // return [
// @if CK_DEBUG_TYPING // `%c${ editorPrefix }%c[${ className }]%c ${ message }`,
// @if CK_DEBUG_TYPING // 'font-weight: normal;',
// @if CK_DEBUG_TYPING // 'font-weight: bold; color: green',
// @if CK_DEBUG_TYPING // '',
// @if CK_DEBUG_TYPING // ...rest
// @if CK_DEBUG_TYPING // ];
// @if CK_DEBUG_TYPING // }
// @if CK_DEBUG_TYPING // function _findAllEditorInstances() {
// @if CK_DEBUG_TYPING // const editors = new Set();
// @if CK_DEBUG_TYPING // for ( const domEditable of document.querySelectorAll( '.ck.ck-content.ck-editor__editable' ) ) {
// @if CK_DEBUG_TYPING // if ( domEditable.ckeditorInstance ) {
// @if CK_DEBUG_TYPING // editors.add( domEditable.ckeditorInstance );
// @if CK_DEBUG_TYPING // }
// @if CK_DEBUG_TYPING // }
// @if CK_DEBUG_TYPING // return Array.from( editors );
// @if CK_DEBUG_TYPING // }
// @if CK_DEBUG_TYPING // function _getLogNodes( editor ) {
// @if CK_DEBUG_TYPING // return [
// @if CK_DEBUG_TYPING // editor.editing.view._renderer,
// @if CK_DEBUG_TYPING // editor.editing.view.domConverter,
// @if CK_DEBUG_TYPING // ...editor.editing.view._observers.values(),
// @if CK_DEBUG_TYPING // editor.plugins.get( 'Input' ),
// @if CK_DEBUG_TYPING // editor.plugins.get( 'Input' )._typingQueue,
// @if CK_DEBUG_TYPING // editor.plugins.get( 'WidgetTypeAround' ),
// @if CK_DEBUG_TYPING // editor.commands.get( 'delete' ),
// @if CK_DEBUG_TYPING // editor.commands.get( 'deleteForward' )
// @if CK_DEBUG_TYPING // ];
// @if CK_DEBUG_TYPING // }