Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / misc / displace.js
1 /**
2 * DO NOT EDIT THIS FILE.
3 * See the following change record for more information,
4 * https://www.drupal.org/node/2815083
5 * @preserve
6 **/
7
8 (function ($, Drupal, debounce) {
9   var offsets = {
10     top: 0,
11     right: 0,
12     bottom: 0,
13     left: 0
14   };
15
16   Drupal.behaviors.drupalDisplace = {
17     attach: function attach() {
18       if (this.displaceProcessed) {
19         return;
20       }
21       this.displaceProcessed = true;
22
23       $(window).on('resize.drupalDisplace', debounce(displace, 200));
24     }
25   };
26
27   function displace(broadcast) {
28     offsets = calculateOffsets();
29     Drupal.displace.offsets = offsets;
30     if (typeof broadcast === 'undefined' || broadcast) {
31       $(document).trigger('drupalViewportOffsetChange', offsets);
32     }
33     return offsets;
34   }
35
36   function calculateOffsets() {
37     return {
38       top: calculateOffset('top'),
39       right: calculateOffset('right'),
40       bottom: calculateOffset('bottom'),
41       left: calculateOffset('left')
42     };
43   }
44
45   function calculateOffset(edge) {
46     var edgeOffset = 0;
47     var displacingElements = document.querySelectorAll('[data-offset-' + edge + ']');
48     var n = displacingElements.length;
49     for (var i = 0; i < n; i++) {
50       var el = displacingElements[i];
51
52       if (el.style.display === 'none') {
53         continue;
54       }
55
56       var displacement = parseInt(el.getAttribute('data-offset-' + edge), 10);
57
58       if (isNaN(displacement)) {
59         displacement = getRawOffset(el, edge);
60       }
61
62       edgeOffset = Math.max(edgeOffset, displacement);
63     }
64
65     return edgeOffset;
66   }
67
68   function getRawOffset(el, edge) {
69     var $el = $(el);
70     var documentElement = document.documentElement;
71     var displacement = 0;
72     var horizontal = edge === 'left' || edge === 'right';
73
74     var placement = $el.offset()[horizontal ? 'left' : 'top'];
75
76     placement -= window['scroll' + (horizontal ? 'X' : 'Y')] || document.documentElement['scroll' + (horizontal ? 'Left' : 'Top')] || 0;
77
78     switch (edge) {
79       case 'top':
80         displacement = placement + $el.outerHeight();
81         break;
82
83       case 'left':
84         displacement = placement + $el.outerWidth();
85         break;
86
87       case 'bottom':
88         displacement = documentElement.clientHeight - placement;
89         break;
90
91       case 'right':
92         displacement = documentElement.clientWidth - placement;
93         break;
94
95       default:
96         displacement = 0;
97     }
98     return displacement;
99   }
100
101   Drupal.displace = displace;
102   $.extend(Drupal.displace, {
103     offsets: offsets,
104
105     calculateOffset: calculateOffset
106   });
107 })(jQuery, Drupal, Drupal.debounce);