Version 3.17.2
Show:

File: node/js/node-region.js

  1. /**
  2. * @module node
  3. * @submodule node-screen
  4. */
  5.  
  6. /**
  7. * Returns a region object for the node
  8. * @config region
  9. * @for Node
  10. * @type Node
  11. */
  12. Y.Node.ATTRS.region = {
  13. getter: function() {
  14. var node = this.getDOMNode(),
  15. region;
  16.  
  17. if (node && !node.tagName) {
  18. if (node.nodeType === 9) { // document
  19. node = node.documentElement;
  20. }
  21. }
  22. if (Y.DOM.isWindow(node)) {
  23. region = Y.DOM.viewportRegion(node);
  24. } else {
  25. region = Y.DOM.region(node);
  26. }
  27. return region;
  28. }
  29. };
  30.  
  31. /**
  32. * Returns a region object for the node's viewport
  33. * @config viewportRegion
  34. * @type Node
  35. */
  36. Y.Node.ATTRS.viewportRegion = {
  37. getter: function() {
  38. return Y.DOM.viewportRegion(Y.Node.getDOMNode(this));
  39. }
  40. };
  41.  
  42. Y.Node.importMethod(Y.DOM, 'inViewportRegion');
  43.  
  44. // these need special treatment to extract 2nd node arg
  45. /**
  46. * Compares the intersection of the node with another node or region
  47. * @method intersect
  48. * @for Node
  49. * @param {Node|Object} node2 The node or region to compare with.
  50. * @param {Object} altRegion An alternate region to use (rather than this node's).
  51. * @return {Object} An object representing the intersection of the regions.
  52. */
  53. Y.Node.prototype.intersect = function(node2, altRegion) {
  54. var node1 = Y.Node.getDOMNode(this);
  55. if (Y.instanceOf(node2, Y.Node)) { // might be a region object
  56. node2 = Y.Node.getDOMNode(node2);
  57. }
  58. return Y.DOM.intersect(node1, node2, altRegion);
  59. };
  60.  
  61. /**
  62. * Determines whether or not the node is within the given region.
  63. * @method inRegion
  64. * @param {Node|Object} node2 The node or region to compare with.
  65. * @param {Boolean} all Whether or not all of the node must be in the region.
  66. * @param {Object} altRegion An alternate region to use (rather than this node's).
  67. * @return {Boolean} True if in region, false if not.
  68. */
  69. Y.Node.prototype.inRegion = function(node2, all, altRegion) {
  70. var node1 = Y.Node.getDOMNode(this);
  71. if (Y.instanceOf(node2, Y.Node)) { // might be a region object
  72. node2 = Y.Node.getDOMNode(node2);
  73. }
  74. return Y.DOM.inRegion(node1, node2, all, altRegion);
  75. };
  76.