@tamagui/react-native-web-lite
Version:
React Native for Web
90 lines (88 loc) • 3.02 kB
JavaScript
import { canUseDOM, invariant } from "@tamagui/react-native-web-internals";
function _class_call_check(instance, Constructor) {
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
}
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, "value" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _create_class(Constructor, protoProps, staticProps) {
return protoProps && _defineProperties(Constructor.prototype, protoProps), staticProps && _defineProperties(Constructor, staticProps), Constructor;
}
var dimensions = {
window: {
fontScale: 1,
height: 0,
scale: 1,
width: 0
},
screen: {
fontScale: 1,
height: 0,
scale: 1,
width: 0
}
},
listeners = {},
shouldInit = canUseDOM;
function update() {
if (canUseDOM) {
var 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(function (handler) {
return handler(dimensions);
});
}
var Dimensions = /* @__PURE__ */function () {
"use strict";
function Dimensions2() {
_class_call_check(this, Dimensions2);
}
return _create_class(Dimensions2, null, [{
key: "get",
value: function (dimension) {
return shouldInit && (shouldInit = !1, update()), invariant(dimensions[dimension], `No dimension set for key ${dimension}`), dimensions[dimension];
}
}, {
key: "set",
value: function (initialDimensions) {
initialDimensions && (canUseDOM ? invariant(!1, "Dimensions cannot be set in the browser") : (initialDimensions.screen != null && (dimensions.screen = initialDimensions.screen), initialDimensions.window != null && (dimensions.window = initialDimensions.window)));
}
}, {
key: "addEventListener",
value: function (type, handler) {
var _this = this;
return listeners[type] = listeners[type] || [], listeners[type].push(handler), {
remove: function () {
_this.removeEventListener(type, handler);
}
};
}
}, {
key: "removeEventListener",
value: function (type, handler) {
Array.isArray(listeners[type]) && (listeners[type] = listeners[type].filter(function (_handler) {
return _handler !== handler;
}));
}
}]), Dimensions2;
}();
canUseDOM && window.addEventListener("resize", handleResize, !1);
export { Dimensions as default };
//# sourceMappingURL=index.native.js.map