function atLeastOneDescendantEditable(oReferenceOverlay, aChildOverlays) {
		var bAtLeastOneChildEditable = aChildOverlays.some(function(oOverlay) {
			return oOverlay.getEditable() && oOverlay.getGeometry();
		});

		if (bAtLeastOneChildEditable) {
			return true;
		}

		var aChildrensChildrenOverlays = [];
		aChildOverlays.forEach(function(oChildOverlay) {
			aChildrensChildrenOverlays = aChildrensChildrenOverlays.concat(OverlayUtil.getAllChildOverlays(oChildOverlay));
		});

		if (!aChildrensChildrenOverlays.length) {
			return false;
		}
		if (childrenAreSameSize(oReferenceOverlay, aChildrensChildrenOverlays)) {
			return atLeastOneDescendantEditable(oReferenceOverlay, aChildrensChildrenOverlays);
		}
		return false;
	}
/**
	 * Checks all the decendants for an editable child. Stops as soon as an editable is found or the children don't have the same size anymore.
	 *
	 * @param {sap.ui.dt.ElementOverlay} oReferenceOverlay - overlay object
	 * @param {sap.ui.dt.ElementOverlay[]} aChildOverlays - array of child overlay objects
	 * @returns {boolean} Returns true if there is an editable descendant
	 * @private
	 */
Checks all the decendants for an editable child. Stops as soon as an editable is found or the children don't have the same size anymore.
@param {sap.ui.dt.ElementOverlay} oReferenceOverlay - overlay object
@param {sap.ui.dt.ElementOverlay[]} aChildOverlays - array of child overlay objects
@returns {boolean} Returns true if there is an editable descendant
@private
Checks all the decendants for an editable child . Stops as soon as an editable is found or the children don ' t have the same size anymore . @param { sap . ui . dt . ElementOverlay } oReferenceOverlay - overlay object @param { sap . ui . dt . ElementOverlay [] } aChildOverlays - array of child overlay objects @returns { boolean } Returns true if there is an editable descendant @private
function atLeastOneDescendantEditable(oReferenceOverlay, aChildOverlays) {
		var bAtLeastOneChildEditable = aChildOverlays.some(function(oOverlay) {
			return oOverlay.getEditable() && oOverlay.getGeometry();
		});
		if (bAtLeastOneChildEditable) {
			return true;
		}
		var aChildrensChildrenOverlays = [];
		aChildOverlays.forEach(function(oChildOverlay) {
			aChildrensChildrenOverlays = aChildrensChildrenOverlays.concat(OverlayUtil.getAllChildOverlays(oChildOverlay));
		});
		if (!aChildrensChildrenOverlays.length) {
			return false;
		}
		if (childrenAreSameSize(oReferenceOverlay, aChildrensChildrenOverlays)) {
			return atLeastOneDescendantEditable(oReferenceOverlay, aChildrensChildrenOverlays);
		}
		return false;
	}
function atLeastOneDescendantEditable ( oReferenceOverlay , aChildOverlays ) { var bAtLeastOneChildEditable = aChildOverlays . some ( function ( oOverlay ) { return oOverlay . getEditable ( ) && oOverlay . getGeometry ( ) ; } ) ; if ( bAtLeastOneChildEditable ) { return true ; } var aChildrensChildrenOverlays = [ ] ; aChildOverlays . forEach ( function ( oChildOverlay ) { aChildrensChildrenOverlays = aChildrensChildrenOverlays . concat ( OverlayUtil . getAllChildOverlays ( oChildOverlay ) ) ; } ) ; if ( ! aChildrensChildrenOverlays . length ) { return false ; } if ( childrenAreSameSize ( oReferenceOverlay , aChildrensChildrenOverlays ) ) { return atLeastOneDescendantEditable ( oReferenceOverlay , aChildrensChildrenOverlays ) ; } return false ; }
Checks all the decendants for an editable child.
Checks all the decendants for an editable child .