D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
thread-self
/
root
/
home
/
shubmkcj
/
designpitara.com
/
admin
/
ckeditor
/
core
/
htmlparser
/
Filename :
node.js
back
Copy
/** * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ 'use strict'; ( function() { /** * A lightweight representation of HTML node. * * @since 4.1.0 * @class * @constructor Creates a node class instance. */ CKEDITOR.htmlParser.node = function() {}; CKEDITOR.htmlParser.node.prototype = { /** * Remove this node from a tree. * * @since 4.1.0 */ remove: function() { var children = this.parent.children, index = CKEDITOR.tools.indexOf( children, this ), previous = this.previous, next = this.next; previous && ( previous.next = next ); next && ( next.previous = previous ); children.splice( index, 1 ); this.parent = null; }, /** * Replace this node with given one. * * @since 4.1.0 * @param {CKEDITOR.htmlParser.node} node The node that will replace this one. */ replaceWith: function( node ) { var children = this.parent.children, index = CKEDITOR.tools.indexOf( children, this ), previous = node.previous = this.previous, next = node.next = this.next; previous && ( previous.next = node ); next && ( next.previous = node ); children[ index ] = node; node.parent = this.parent; this.parent = null; }, /** * Insert this node after given one. * * @since 4.1.0 * @param {CKEDITOR.htmlParser.node} node The node that will precede this element. */ insertAfter: function( node ) { var children = node.parent.children, index = CKEDITOR.tools.indexOf( children, node ), next = node.next; children.splice( index + 1, 0, this ); this.next = node.next; this.previous = node; node.next = this; next && ( next.previous = this ); this.parent = node.parent; }, /** * Insert this node before given one. * * @since 4.1.0 * @param {CKEDITOR.htmlParser.node} node The node that will follow this element. */ insertBefore: function( node ) { var children = node.parent.children, index = CKEDITOR.tools.indexOf( children, node ); children.splice( index, 0, this ); this.next = node; this.previous = node.previous; node.previous && ( node.previous.next = this ); node.previous = this; this.parent = node.parent; }, /** * Gets the closest ancestor element of this element which satisfies given condition * * @since 4.3.0 * @param {String/Object/Function} condition Name of an ancestor, hash of names or validator function. * @returns {CKEDITOR.htmlParser.element} The closest ancestor which satisfies given condition or `null`. */ getAscendant: function( condition ) { var checkFn = typeof condition == 'function' ? condition : typeof condition == 'string' ? function( el ) { return el.name == condition; } : function( el ) { return el.name in condition; }; var parent = this.parent; // Parent has to be an element - don't check doc fragment. while ( parent && parent.type == CKEDITOR.NODE_ELEMENT ) { if ( checkFn( parent ) ) return parent; parent = parent.parent; } return null; }, /** * Wraps this element with given `wrapper`. * * @since 4.3.0 * @param {CKEDITOR.htmlParser.element} wrapper The element which will be this element's new parent. * @returns {CKEDITOR.htmlParser.element} Wrapper. */ wrapWith: function( wrapper ) { this.replaceWith( wrapper ); wrapper.add( this ); return wrapper; }, /** * Gets this node's index in its parent's children array. * * @since 4.3.0 * @returns {Number} */ getIndex: function() { return CKEDITOR.tools.indexOf( this.parent.children, this ); }, getFilterContext: function( context ) { return context || {}; } }; } )();