public/ckeditor/4.4dev/plugins/magicline/plugin.js
function getAscendantTrigger( that ) {
		var node = that.element,
			trigger;

		if ( node && isHtml( node ) ) {
			trigger = node.getAscendant( that.triggers, true );

			// If trigger is an element, neither editable nor editable's ascendant.
			if ( trigger && that.editable.contains( trigger ) ) {
				// Check for closest editable limit.
				// Don't consider trigger as a limit as it may be nested editable (includeSelf=false) (#12009).
				var limit = getClosestEditableLimit( trigger );

				// Trigger in nested editable area.
				if ( limit.getAttribute( 'contenteditable' ) == 'true' )
					return trigger;
				// Trigger in non-editable area.
				else if ( limit.is( that.triggers ) )
					return limit;
				else
					return null;

				return trigger;
			} else
				return null;
		}

		return null;
	}
function getAscendantTrigger( that ) {
		var node = that.element,
			trigger;

		if ( node && isHtml( node ) ) {
			trigger = node.getAscendant( that.triggers, true );

			// If trigger is an element, neither editable nor editable's ascendant.
			if ( trigger && that.editable.contains( trigger ) ) {
				// Check for closest editable limit.
				// Don't consider trigger as a limit as it may be nested editable (includeSelf=false) (#12009).
				var limit = getClosestEditableLimit( trigger );

				// Trigger in nested editable area.
				if ( limit.getAttribute( 'contenteditable' ) == 'true' )
					return trigger;
				// Trigger in non-editable area.
				else if ( limit.is( that.triggers ) )
					return limit;
				else
					return null;

				return trigger;
			} else
				return null;
		}

		return null;
	}
function getAscendantTrigger ( that ) { var node = that . element , trigger ; if ( node && isHtml ( node ) ) { trigger = node . getAscendant ( that . triggers , true ) ; // If trigger is an element, neither editable nor editable's ascendant.
 if ( trigger && that . editable . contains ( trigger ) ) { // Check for closest editable limit.
 // Don't consider trigger as a limit as it may be nested editable (includeSelf=false) (#12009).
 var limit = getClosestEditableLimit ( trigger ) ; // Trigger in nested editable area.
 if ( limit . getAttribute ( 'contenteditable' ) == 'true' ) return trigger ; // Trigger in non-editable area.
 else if ( limit . is ( that . triggers ) ) return limit ; else return null ; return trigger ; } else return null ; } return null ; }
Gets the closest parent node that belongs to triggers group.
Gets the closest parent node that belongs to triggers group .