(el, optionalOffset)
| 11 | import getOffset from './../libs/offset'; |
| 12 | |
| 13 | const calculateOffset = function (el, optionalOffset) { |
| 14 | let elementOffsetTop = 0; |
| 15 | let additionalOffset = 0; |
| 16 | const windowHeight = window.innerHeight; |
| 17 | const attrs = { |
| 18 | offset: el.getAttribute('data-aos-offset'), |
| 19 | anchor: el.getAttribute('data-aos-anchor'), |
| 20 | anchorPlacement: el.getAttribute('data-aos-anchor-placement') |
| 21 | }; |
| 22 | |
| 23 | if (attrs.offset && !isNaN(attrs.offset)) { |
| 24 | additionalOffset = parseInt(attrs.offset); |
| 25 | } |
| 26 | |
| 27 | if (attrs.anchor && document.querySelectorAll(attrs.anchor)) { |
| 28 | el = document.querySelectorAll(attrs.anchor)[0]; |
| 29 | } |
| 30 | |
| 31 | elementOffsetTop = getOffset(el).top; |
| 32 | |
| 33 | switch (attrs.anchorPlacement) { |
| 34 | case 'top-bottom': |
| 35 | // Default offset |
| 36 | break; |
| 37 | case 'center-bottom': |
| 38 | elementOffsetTop += el.offsetHeight / 2; |
| 39 | break; |
| 40 | case 'bottom-bottom': |
| 41 | elementOffsetTop += el.offsetHeight; |
| 42 | break; |
| 43 | case 'top-center': |
| 44 | elementOffsetTop += windowHeight / 2; |
| 45 | break; |
| 46 | case 'bottom-center': |
| 47 | elementOffsetTop += windowHeight / 2 + el.offsetHeight; |
| 48 | break; |
| 49 | case 'center-center': |
| 50 | elementOffsetTop += windowHeight / 2 + el.offsetHeight / 2; |
| 51 | break; |
| 52 | case 'top-top': |
| 53 | elementOffsetTop += windowHeight; |
| 54 | break; |
| 55 | case 'bottom-top': |
| 56 | elementOffsetTop += el.offsetHeight + windowHeight; |
| 57 | break; |
| 58 | case 'center-top': |
| 59 | elementOffsetTop += el.offsetHeight / 2 + windowHeight; |
| 60 | break; |
| 61 | } |
| 62 | |
| 63 | if (!attrs.anchorPlacement && !attrs.offset && !isNaN(optionalOffset)) { |
| 64 | additionalOffset = optionalOffset; |
| 65 | } |
| 66 | |
| 67 | return elementOffsetTop + additionalOffset; |
| 68 | }; |
| 69 | |
| 70 | export default calculateOffset; |
no outgoing calls
no test coverage detected
searching dependent graphs…