one
Version:
One is a React framework for web, iOS, and Android apps.
155 lines (153 loc) • 5.06 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
get: () => from[key],
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
});
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var insets_exports = {};
__export(insets_exports, {
buildSafeAreaInsetStyle: () => buildSafeAreaInsetStyle,
keyboardSafeBottom: () => keyboardSafeBottom,
providerEventToMetrics: () => providerEventToMetrics,
resolveOverlappingInsets: () => resolveOverlappingInsets,
resolveSafeAreaEdgeModes: () => resolveSafeAreaEdgeModes
});
module.exports = __toCommonJS(insets_exports);
function resolveSafeAreaEdgeModes(edges) {
var all = [
"top",
"right",
"bottom",
"left"
];
if (edges == null) {
return {
top: "additive",
right: "additive",
bottom: "additive",
left: "additive"
};
}
if (Array.isArray(edges)) {
return Object.fromEntries(all.map(function(edge) {
return [edge, edges.includes(edge) ? "additive" : "off"];
}));
}
return Object.fromEntries(all.map(function(edge) {
var mode = edges[edge];
return [edge, mode === "maximum" || mode === "additive" || mode === "off" ? mode : "off"];
}));
}
function flattenStyle(style, resolveStyle) {
if (!style) return {};
if (resolveStyle) {
var resolved = resolveStyle(style);
if (!resolved || typeof resolved !== "object" || Array.isArray(resolved)) {
return flattenStyle(resolved);
}
return resolved;
}
if (Array.isArray(style)) {
return Object.assign({}, ...style.map(function(entry) {
return flattenStyle(entry);
}));
}
if (typeof style === "number") {
throw new Error("buildSafeAreaInsetStyle cannot read a registered StyleSheet ID without resolveStyle; pass StyleSheet.flatten");
}
return typeof style === "object" ? style : {};
}
function readBaseInset(style, mode, edge) {
var capitalized = edge.charAt(0).toUpperCase() + edge.slice(1);
var exact = style[`${mode}${capitalized}`];
if (typeof exact === "number") return exact;
var axis = edge === "top" || edge === "bottom" ? style[`${mode}Vertical`] : style[`${mode}Horizontal`];
if (typeof axis === "number") return axis;
var base = style[mode];
return typeof base === "number" ? base : 0;
}
function buildSafeAreaInsetStyle(options) {
var mode = options.mode === "margin" ? "margin" : "padding";
var flattened = flattenStyle(options.style, options.resolveStyle);
var edgeModes = resolveSafeAreaEdgeModes(options.edges);
var output = {};
for (var _i = 0, _iter = [
"top",
"right",
"bottom",
"left"
]; _i < _iter.length; _i++) {
var edge = _iter[_i];
var base = readBaseInset(flattened, mode, edge);
var inset = options.insets[edge];
var edgeMode = edgeModes[edge];
var value = edgeMode === "off" ? base : edgeMode === "maximum" ? Math.max(base, inset) : base + inset;
output[`${mode}${edge.charAt(0).toUpperCase() + edge.slice(1)}`] = value;
}
return output;
}
function keyboardSafeBottom(systemBottom, stableBottom) {
return Math.min(systemBottom, stableBottom);
}
function resolveOverlappingInsets(options) {
var { windowInsets, windowWidth, windowHeight, visibleLeft, visibleTop, viewWidth, viewHeight } = options;
return {
top: Math.max(windowInsets.top - visibleTop, 0),
right: Math.max(Math.min(visibleLeft + viewWidth - windowWidth, 0) + windowInsets.right, 0),
bottom: Math.max(Math.min(visibleTop + viewHeight - windowHeight, 0) + windowInsets.bottom, 0),
left: Math.max(windowInsets.left - visibleLeft, 0)
};
}
function providerEventToMetrics(payload) {
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
try {
for (var _iterator = Object.entries(payload)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var [key, value] = _step.value;
if (typeof value !== "number" || !Number.isFinite(value)) {
throw new Error(`OneNativeSafeAreaProvider emitted non-finite ${key}`);
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return {
insets: {
top: payload.insetTop,
right: payload.insetRight,
bottom: payload.insetBottom,
left: payload.insetLeft
},
frame: {
x: payload.frameX,
y: payload.frameY,
width: payload.frameWidth,
height: payload.frameHeight
}
};
}