Security update for Core, with self-updated composer
[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 = Drupal.displace.offsets = calculateOffsets();
29     if (typeof broadcast === 'undefined' || broadcast) {
30       $(document).trigger('drupalViewportOffsetChange', offsets);
31     }
32     return offsets;
33   }
34
35   function calculateOffsets() {
36     return {
37       top: calculateOffset('top'),
38       right: calculateOffset('right'),
39       bottom: calculateOffset('bottom'),
40       left: calculateOffset('left')
41     };
42   }
43
44   function calculateOffset(edge) {
45     var edgeOffset = 0;
46     var displacingElements = document.querySelectorAll('[data-offset-' + edge + ']');
47     var n = displacingElements.length;
48     for (var i = 0; i < n; i++) {
49       var el = displacingElements[i];
50
51       if (el.style.display === 'none') {
52         continue;
53       }
54
55       var displacement = parseInt(el.getAttribute('data-offset-' + edge), 10);
56
57       if (isNaN(displacement)) {
58         displacement = getRawOffset(el, edge);
59       }
60
61       edgeOffset = Math.max(edgeOffset, displacement);
62     }
63
64     return edgeOffset;
65   }
66
67   function getRawOffset(el, edge) {
68     var $el = $(el);
69     var documentElement = document.documentElement;
70     var displacement = 0;
71     var horizontal = edge === 'left' || edge === 'right';
72
73     var placement = $el.offset()[horizontal ? 'left' : 'top'];
74
75     placement -= window['scroll' + (horizontal ? 'X' : 'Y')] || document.documentElement['scroll' + (horizontal ? 'Left' : 'Top')] || 0;
76
77     switch (edge) {
78       case 'top':
79         displacement = placement + $el.outerHeight();
80         break;
81
82       case 'left':
83         displacement = placement + $el.outerWidth();
84         break;
85
86       case 'bottom':
87         displacement = documentElement.clientHeight - placement;
88         break;
89
90       case 'right':
91         displacement = documentElement.clientWidth - placement;
92         break;
93
94       default:
95         displacement = 0;
96     }
97     return displacement;
98   }
99
100   Drupal.displace = displace;
101   $.extend(Drupal.displace, {
102     offsets: offsets,
103
104     calculateOffset: calculateOffset
105   });
106 })(jQuery, Drupal, Drupal.debounce);