dragdrop.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. UE.plugins["dragdrop"] = function() {
  2. var me = this;
  3. me.ready(function() {
  4. domUtils.on(this.body, "dragend", function() {
  5. var rng = me.selection.getRange();
  6. var node = rng.getClosedNode() || me.selection.getStart();
  7. if (node && node.tagName == "IMG") {
  8. var pre = node.previousSibling,
  9. next;
  10. while ((next = node.nextSibling)) {
  11. if (
  12. next.nodeType == 1 &&
  13. next.tagName == "SPAN" &&
  14. !next.firstChild
  15. ) {
  16. domUtils.remove(next);
  17. } else {
  18. break;
  19. }
  20. }
  21. if (
  22. ((pre && pre.nodeType == 1 && !domUtils.isEmptyBlock(pre)) || !pre) &&
  23. (!next || (next && !domUtils.isEmptyBlock(next)))
  24. ) {
  25. if (pre && pre.tagName == "P" && !domUtils.isEmptyBlock(pre)) {
  26. pre.appendChild(node);
  27. domUtils.moveChild(next, pre);
  28. domUtils.remove(next);
  29. } else if (
  30. next &&
  31. next.tagName == "P" &&
  32. !domUtils.isEmptyBlock(next)
  33. ) {
  34. next.insertBefore(node, next.firstChild);
  35. }
  36. if (pre && pre.tagName == "P" && domUtils.isEmptyBlock(pre)) {
  37. domUtils.remove(pre);
  38. }
  39. if (next && next.tagName == "P" && domUtils.isEmptyBlock(next)) {
  40. domUtils.remove(next);
  41. }
  42. rng.selectNode(node).select();
  43. me.fireEvent("saveScene");
  44. }
  45. }
  46. });
  47. });
  48. me.addListener("keyup", function(type, evt) {
  49. var keyCode = evt.keyCode || evt.which;
  50. if (keyCode == 13) {
  51. var rng = me.selection.getRange(),
  52. node;
  53. if (
  54. (node = domUtils.findParentByTagName(rng.startContainer, "p", true))
  55. ) {
  56. if (domUtils.getComputedStyle(node, "text-align") == "center") {
  57. domUtils.removeStyle(node, "text-align");
  58. }
  59. }
  60. }
  61. });
  62. };