phanpy/src/utils/safe-bounding-box-padding.js

32 lines
959 B
JavaScript
Raw Normal View History

2023-06-13 09:46:37 +00:00
import mem from 'mem';
const root = document.documentElement;
2023-06-14 03:15:40 +00:00
const style = getComputedStyle(root);
2023-06-13 09:46:37 +00:00
const defaultBoundingBoxPadding = 8;
function _safeBoundingBoxPadding(paddings = []) {
// paddings = [top, right, bottom, left]
2023-06-13 09:46:37 +00:00
// Get safe area inset variables from root
const safeAreaInsetTop = style.getPropertyValue('--sai-top');
const safeAreaInsetRight = style.getPropertyValue('--sai-right');
const safeAreaInsetBottom = style.getPropertyValue('--sai-bottom');
const safeAreaInsetLeft = style.getPropertyValue('--sai-left');
const str = [
safeAreaInsetTop,
safeAreaInsetRight,
safeAreaInsetBottom,
safeAreaInsetLeft,
]
.map(
(v, i) =>
(parseInt(v, 10) || defaultBoundingBoxPadding) + (paddings[i] || 0),
)
2023-06-13 09:46:37 +00:00
.join(' ');
// console.log(str);
return str;
}
const safeBoundingBoxPadding = mem(_safeBoundingBoxPadding, {
maxAge: 10000, // 10 seconds
});
export default safeBoundingBoxPadding;