diff -r 318533413200 -r a1707c607eec src/pyams_skin/resources/js/ext/tinymce/dev/classes/NodeChange.js --- a/src/pyams_skin/resources/js/ext/tinymce/dev/classes/NodeChange.js Sun Jul 19 02:02:20 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/** - * NodeChange.js - * - * Copyright, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://www.tinymce.com/license - * Contributing: http://www.tinymce.com/contributing - */ - -/** - * This class handles the nodechange event dispatching both manual and though selection change events. - * - * @class tinymce.NodeChange - * @private - */ -define("tinymce/NodeChange", [ - "tinymce/dom/RangeUtils", - "tinymce/Env" -], function(RangeUtils, Env) { - return function(editor) { - var lastRng, lastPath = []; - - /** - * Returns true/false if the current element path has been changed or not. - * - * @private - * @return {Boolean} True if the element path is the same false if it's not. - */ - function isSameElementPath(startElm) { - var i, currentPath; - - currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm); - if (currentPath.length === lastPath.length) { - for (i = currentPath.length; i >= 0; i--) { - if (currentPath[i] !== lastPath[i]) { - break; - } - } - - if (i === -1) { - lastPath = currentPath; - return true; - } - } - - lastPath = currentPath; - - return false; - } - - // Gecko doesn't support the "selectionchange" event - if (!('onselectionchange' in editor.getDoc())) { - editor.on('NodeChange Click MouseUp KeyUp Focus', function(e) { - var nativeRng, fakeRng; - - // Since DOM Ranges mutate on modification - // of the DOM we need to clone it's contents - nativeRng = editor.selection.getRng(); - fakeRng = { - startContainer: nativeRng.startContainer, - startOffset: nativeRng.startOffset, - endContainer: nativeRng.endContainer, - endOffset: nativeRng.endOffset - }; - - // Always treat nodechange as a selectionchange since applying - // formatting to the current range wouldn't update the range but it's parent - if (e.type == 'nodechange' || !RangeUtils.compareRanges(fakeRng, lastRng)) { - editor.fire('SelectionChange'); - } - - lastRng = fakeRng; - }); - } - - // IE has a bug where it fires a selectionchange on right click that has a range at the start of the body - // When the contextmenu event fires the selection is located at the right location - editor.on('contextmenu', function() { - editor.fire('SelectionChange'); - }); - - // Selection change is delayed ~200ms on IE when you click inside the current range - editor.on('SelectionChange', function() { - var startElm = editor.selection.getStart(true); - - // IE 8 will fire a selectionchange event with an incorrect selection - // when focusing out of table cells. Click inside cell -> toolbar = Invalid SelectionChange event - if (!Env.range && editor.selection.isCollapsed()) { - return; - } - - if (!isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) { - editor.nodeChanged({selectionChange: true}); - } - }); - - // Fire an extra nodeChange on mouseup for compatibility reasons - editor.on('MouseUp', function(e) { - if (!e.isDefaultPrevented()) { - // Delay nodeChanged call for WebKit edge case issue where the range - // isn't updated until after you click outside a selected image - if (editor.selection.getNode().nodeName == 'IMG') { - setTimeout(function() { - editor.nodeChanged(); - }, 0); - } else { - editor.nodeChanged(); - } - } - }); - - /** - * Distpaches out a onNodeChange event to all observers. This method should be called when you - * need to update the UI states or element path etc. - * - * @method nodeChanged - * @param {Object} args Optional args to pass to NodeChange event handlers. - */ - this.nodeChanged = function(args) { - var selection = editor.selection, node, parents, root; - - // Fix for bug #1896577 it seems that this can not be fired while the editor is loading - if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.settings.readonly) { - // Get start node - root = editor.getBody(); - node = selection.getStart() || root; - node = node.ownerDocument != editor.getDoc() ? editor.getBody() : node; - - // Edge case for

|

- if (node.nodeName == 'IMG' && selection.isCollapsed()) { - node = node.parentNode; - } - - // Get parents and add them to object - parents = []; - editor.dom.getParent(node, function(node) { - if (node === root) { - return true; - } - - parents.push(node); - }); - - args = args || {}; - args.element = node; - args.parents = parents; - - editor.fire('NodeChange', args); - } - }; - }; -});