@tamagui/react-native-web-lite
Version:
React Native for Web
77 lines (76 loc) • 3.03 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: !0 });
}, __copyProps = (to, from, except, desc) => {
if (from && typeof from == "object" || typeof from == "function")
for (let key of __getOwnPropNames(from))
!__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: !0 }), mod);
var Dimensions_exports = {};
__export(Dimensions_exports, {
Dimensions: () => Dimensions,
default: () => Dimensions_default
});
module.exports = __toCommonJS(Dimensions_exports);
var import_react_native_web_internals = require("@tamagui/react-native-web-internals");
const dimensions = {
window: {
fontScale: 1,
height: 0,
scale: 1,
width: 0
},
screen: {
fontScale: 1,
height: 0,
scale: 1,
width: 0
}
}, listeners = {};
let shouldInit = import_react_native_web_internals.canUseDOM;
function update() {
if (!import_react_native_web_internals.canUseDOM)
return;
const win = window, docEl = win.document.documentElement;
dimensions.window = {
fontScale: 1,
height: docEl.clientHeight,
scale: win.devicePixelRatio || 1,
width: docEl.clientWidth
}, dimensions.screen = {
fontScale: 1,
height: win.screen.height,
scale: win.devicePixelRatio || 1,
width: win.screen.width
};
}
function handleResize() {
update(), Array.isArray(listeners.change) && listeners.change.forEach((handler) => handler(dimensions));
}
class Dimensions {
static get(dimension) {
return shouldInit && (shouldInit = !1, update()), (0, import_react_native_web_internals.invariant)(dimensions[dimension], `No dimension set for key ${dimension}`), dimensions[dimension];
}
static set(initialDimensions) {
initialDimensions && (import_react_native_web_internals.canUseDOM ? (0, import_react_native_web_internals.invariant)(!1, "Dimensions cannot be set in the browser") : (initialDimensions.screen != null && (dimensions.screen = initialDimensions.screen), initialDimensions.window != null && (dimensions.window = initialDimensions.window)));
}
static addEventListener(type, handler) {
return listeners[type] = listeners[type] || [], listeners[type].push(handler), {
remove: () => {
this.removeEventListener(type, handler);
}
};
}
static removeEventListener(type, handler) {
Array.isArray(listeners[type]) && (listeners[type] = listeners[type].filter((_handler) => _handler !== handler));
}
}
import_react_native_web_internals.canUseDOM && window.addEventListener("resize", handleResize, !1);
var Dimensions_default = Dimensions;
//# sourceMappingURL=index.js.map