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/bbcode/ast-processor/dist/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/bbcode/ast-processor/dist/ast-processor.bundle.js
/* eslint-disable */
this.BX = this.BX || {};
this.BX.UI = this.BX.UI || {};
(function (exports,main_core) {
	'use strict';

	function getByIndex(array, index) {
	  if (!main_core.Type.isArray(array)) {
	    throw new TypeError('array is not a array');
	  }
	  if (!main_core.Type.isInteger(index)) {
	    throw new TypeError('index is not a integer');
	  }
	  const preparedIndex = index < 0 ? array.length + index : index;
	  return array[preparedIndex];
	}

	class AstProcessor {
	  /**
	   * Makes flat list from AST
	   */
	  static flattenAst(ast) {
	    if (ast && ast.getChildren) {
	      const children = ast.getChildren();
	      return [...children, ...children.flatMap(node => {
	        return AstProcessor.flattenAst(node);
	      })];
	    }
	    return [];
	  }

	  /**
	   * Parses selector
	   */
	  static parseSelector(selector) {
	    const regex = /(\w+)\[(.*?)]|\s*(>)\s*|\w+/g;
	    const matches = [...selector.matchAll(regex)];
	    return matches.map(([fullMatch, nodeName, rawProps, arrow]) => {
	      if (arrow) {
	        return '>';
	      }
	      if (rawProps) {
	        const propsRegexp = /(\w+)=["'](.*?)["']/g;
	        const propsMatches = [...rawProps.matchAll(propsRegexp)];
	        const props = propsMatches.map(([, key, value]) => {
	          return [key, value];
	        });
	        return {
	          nodeName,
	          props
	        };
	      }
	      return {
	        nodeName: fullMatch,
	        props: []
	      };
	    });
	  }

	  /**
	   * @private
	   */
	  static matchesNodeWithSelector(node, selector) {
	    if (node && node.constructor.name === selector.nodeName) {
	      if (selector.props.length > 0) {
	        return selector.props.every(([key, value]) => {
	          const propValue = (() => {
	            const name = `${key.charAt(0).toUpperCase()}${key.slice(1)}`;
	            if (main_core.Type.isFunction(node[`get${name}`])) {
	              return node[`get${name}`]();
	            }
	            if (main_core.Type.isFunction(node[`is${name}`])) {
	              return node[`is${name}`]();
	            }
	            return null;
	          })();
	          if (['true', 'false'].includes(value)) {
	            return propValue === (value === 'true');
	          }
	          return propValue === value;
	        });
	      }
	      return true;
	    }
	    return false;
	  }

	  /**
	   * Finds parent node by parsed selector
	   */
	  static findParentNode(node, selector) {
	    if (node) {
	      const preparedSelector = (() => {
	        if (main_core.Type.isStringFilled(selector)) {
	          return AstProcessor.parseSelector(selector)[0];
	        }
	        return selector;
	      })();
	      const parent = node.getParent();
	      if (AstProcessor.matchesNodeWithSelector(parent, preparedSelector)) {
	        return parent;
	      }
	      return AstProcessor.findParentNode(parent, preparedSelector);
	    }
	    return null;
	  }
	  static findParentNodeByName(node, name) {
	    if (node) {
	      const parent = node.getParent();
	      if (parent && parent.getName() === name) {
	        return parent;
	      }
	      return AstProcessor.findParentNodeByName(parent, name);
	    }
	    return null;
	  }

	  /**
	   * Find elements by selector
	   */
	  static findElements(ast, selector) {
	    const flattenedAst = AstProcessor.flattenAst(ast);
	    const parsedSelector = AstProcessor.parseSelector(selector);
	    const lastSelector = getByIndex(parsedSelector, -1);
	    let checkClosestParent = false;
	    return parsedSelector.reduceRight((acc, currentSelector) => {
	      if (main_core.Type.isPlainObject(currentSelector)) {
	        if (currentSelector === lastSelector) {
	          return acc.filter(node => {
	            return AstProcessor.matchesNodeWithSelector(node, currentSelector);
	          });
	        }
	        if (checkClosestParent) {
	          checkClosestParent = false;
	          return acc.filter(node => {
	            return AstProcessor.matchesNodeWithSelector(node.getParent(), currentSelector);
	          });
	        }
	        return acc.filter(node => {
	          return AstProcessor.findParentNode(node, currentSelector) !== null;
	        });
	      }
	      if (currentSelector === '>') {
	        checkClosestParent = true;
	      }
	      return acc;
	    }, flattenedAst);
	  }

	  /**
	   * Reduces AST
	   */
	  static reduceAst(ast, reducer) {
	    const children = ast.getChildren == null ? void 0 : ast.getChildren().reduce((acc, child) => {
	      const preparedChild = [AstProcessor.reduceAst(child, reducer)].flat();
	      if (!main_core.Type.isNil(preparedChild)) {
	        acc.replaceChild(child, ...preparedChild);
	      }
	      return acc;
	    }, ast);
	    return reducer(ast, children);
	  }
	}

	exports.AstProcessor = AstProcessor;

}((this.BX.UI.BBCode = this.BX.UI.BBCode || {}),BX));
//# sourceMappingURL=ast-processor.bundle.js.map

Youez - 2016 - github.com/yon3zu
LinuXploit