forked from swiftlang/swift-docc-render
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmultipleLines.js
36 lines (30 loc) · 1.35 KB
/
multipleLines.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* This source file is part of the Swift.org open source project
*
* Copyright (c) 2021-2023 Apple Inc. and the Swift project authors
* Licensed under Apache License v2.0 with Runtime Library Exception
*
* See https://swift.org/LICENSE.txt for license information
* See https://swift.org/CONTRIBUTORS.txt for Swift project authors
*/
/**
* Calculates if element has multiple lines depending on its height and line height
* @param el
* @returns {Boolean}
*/
// eslint-disable-next-line import/prefer-default-export
export function displaysMultipleLines(el) {
if (!el) return false;
const computedStyle = window.getComputedStyle(el.$el || el);
const height = (el.$el || el).offsetHeight;
const lineHeight = computedStyle.lineHeight ? parseFloat(computedStyle.lineHeight) : 1;
const paddingTop = computedStyle.paddingTop ? parseFloat(computedStyle.paddingTop) : 0;
const paddingBottom = computedStyle.paddingBottom ? parseFloat(computedStyle.paddingBottom) : 0;
const borderTopWidth = computedStyle.borderTopWidth
? parseFloat(computedStyle.borderTopWidth) : 0;
const borderBottomWidth = computedStyle.borderBottomWidth
? parseFloat(computedStyle.borderBottomWidth) : 0;
const internalHeight = height - (paddingTop + paddingBottom + borderTopWidth + borderBottomWidth);
const lines = internalHeight / lineHeight;
return lines >= 2;
}