403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/text-editor/src/debug/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/text-editor/src/debug/print-node.js
import { Type } from 'main.core';
import { $isTextNode, LexicalNode, type TextNode } from 'ui.lexical.core';
import { $isLinkNode, type LinkNode } from 'ui.lexical.link';
import { $isCodeNode, $isCodeTokenNode, type CodeNode, type CodeTokenNode } from '../plugins/code';
import {
	$isFileNode,
	$isFileImageNode,
	$isFileVideoNode,
	type FileNode,
	type FileImageNode,
	type FileVideoNode,
} from '../plugins/file';

import { $isImageNode, type ImageNode } from '../plugins/image';
import { $isMentionNode, type MentionNode } from '../plugins/mention';
import { $isSmileyNode, type SmileyNode } from '../plugins/smiley';
import { $isVideoNode, type VideoNode } from '../plugins/video';

import { DETAIL_PREDICATES, MODE_PREDICATES, NON_SINGLE_WIDTH_CHARS_REPLACEMENT } from './constants';
import { printFormatProperties } from './print-format-properties';

export function printNode(node: LexicalNode): string
{
	if ($isCodeTokenNode(node))
	{
		const codeTokenNode: CodeTokenNode = node;

		return `{ ${codeTokenNode.__highlightType}: "${normalize(codeTokenNode.getTextContent())}" }`;
	}

	if ($isCodeNode(node))
	{
		const codeTokenNode: CodeNode = node;

		return `{ children: ${codeTokenNode.getChildrenSize()} }`;
	}

	if ($isTextNode(node))
	{
		const text = node.getTextContent();
		const title = text.length === 0 ? '(empty)' : `"${normalize(text)}"`;
		const properties = printAllTextNodeProperties(node);

		return [title, properties.length > 0 ? `{ ${properties} }` : null]
			.filter(Boolean)
			.join(' ')
			.trim();
	}

	if ($isFileImageNode(node))
	{
		const fileImageNode: FileImageNode = node;

		return `{ id: ${fileImageNode.getId()}, width: ${fileImageNode.getWidth()}, height: ${fileImageNode.getHeight()} }`;
	}

	if ($isFileNode(node))
	{
		const fileNode: FileNode = node;

		return `{ id: ${fileNode.getId()} }`;
	}

	if ($isFileVideoNode(node))
	{
		const fileVideoNode: FileVideoNode = node;

		return `{ id: ${fileVideoNode.getId()} }`;
	}

	if ($isSmileyNode(node))
	{
		const smileyNode: SmileyNode = node;

		return `{ typing: ${smileyNode.getTyping()}, width: ${smileyNode.getWidth()}, height: ${smileyNode.getHeight()} }`;
	}

	if ($isVideoNode(node))
	{
		const videoNode: VideoNode = node;

		return `{ width: ${videoNode.getWidth()}, height: ${videoNode.getHeight()} }`;
	}

	if ($isMentionNode(node))
	{
		const mentionNode: MentionNode = node;

		return `{ entityId: ${mentionNode.getEntityId()}, id: ${mentionNode.getId()} }`;
	}

	if ($isImageNode(node))
	{
		const imageNode: ImageNode = node;

		return `{ width: ${imageNode.getWidth()}, height: ${imageNode.getHeight()} }`;
	}

	if ($isLinkNode(node))
	{
		const linkNode: LinkNode = node;
		const link = linkNode.getURL();
		const title = link.length === 0 ? '(empty)' : `"${normalize(link)}"`;
		const properties = printAllLinkNodeProperties(linkNode);

		return [title, properties.length > 0 ? `{ ${properties} }` : null]
			.filter(Boolean)
			.join(' ')
			.trim();
	}

	return '';
}

function normalize(text: string)
{
	return Object.entries(NON_SINGLE_WIDTH_CHARS_REPLACEMENT).reduce(
		(acc, [key, value]) => acc.replace(new RegExp(key, 'g'), String(value)),
		text,
	);
}

function printAllTextNodeProperties(node: TextNode): string
{
	return [
		printFormatProperties(node),
		printDetailProperties(node),
		printModeProperties(node),
	]
		.filter(Boolean)
		.join(', ');
}

function printAllLinkNodeProperties(node: LinkNode): string
{
	return [
		printTargetProperties(node),
		printRelProperties(node),
		printTitleProperties(node),
	]
		.filter(Boolean)
		.join(', ');
}

function printTargetProperties(node: LinkNode): string
{
	let str = node.getTarget();
	if (!Type.isNil(str))
	{
		str = `target: ${str}`;
	}

	return str;
}

function printRelProperties(node: LinkNode): string
{
	let str = node.getRel();
	if (!Type.isNil(str))
	{
		str = `rel: ${str}`;
	}

	return str;
}

function printTitleProperties(node: LinkNode): string
{
	let str = node.getTitle();
	if (!Type.isNil(str))
	{
		str = `title: ${str}`;
	}

	return str;
}

function printDetailProperties(nodeOrSelection: TextNode): string
{
	let str = DETAIL_PREDICATES.map((predicate) => predicate(nodeOrSelection))
		.filter(Boolean)
		.join(', ')
		.toLocaleLowerCase();

	if (str !== '')
	{
		str = `detail: ${str}`;
	}

	return str;
}

function printModeProperties(nodeOrSelection: TextNode): string
{
	let str = MODE_PREDICATES.map((predicate) => predicate(nodeOrSelection))
		.filter(Boolean)
		.join(', ')
		.toLocaleLowerCase();

	if (str !== '')
	{
		str = `mode: ${str}`;
	}

	return str;
}

Youez - 2016 - github.com/yon3zu
LinuXploit