New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@zag-js/element-rect

Package Overview
Dependencies
Maintainers
1
Versions
720
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@zag-js/element-rect - npm Package Compare versions

Comparing version 0.0.0-dev-20230202113057 to 0.0.0-dev-20230326002806

6

dist/index.d.ts

@@ -5,4 +5,8 @@ type Fn = (rect: DOMRect) => void;

};
declare function trackElementRect(el: Measurable, fn: Fn): () => void;
type TrackScope = "size" | "position" | "rect";
type TrackRectOptions = {
scope?: TrackScope;
};
declare function trackElementRect(el: Measurable, fn: Fn, options?: TrackRectOptions): () => void;
export { Measurable, trackElementRect };

54

dist/index.js

@@ -26,9 +26,7 @@ "use strict";

module.exports = __toCommonJS(src_exports);
function getObservedElements() {
;
globalThis.__rectObserverMap__ = globalThis.__rectObserverMap__ || /* @__PURE__ */ new Map();
return globalThis.__rectObserverMap__;
}
function trackElementRect(el, fn) {
const observedElements = getObservedElements();
var rafId;
var observedElements = /* @__PURE__ */ new Map();
function trackElementRect(el, fn, options = {}) {
const { scope = "rect" } = options;
const loop = getLoopFn(scope);
const data = observedElements.get(el);

@@ -63,20 +61,28 @@ if (!data) {

}
var rafId;
function loop() {
const observedElements = getObservedElements();
const changedRectsData = [];
observedElements.forEach((data, element) => {
const newRect = element.getBoundingClientRect();
if (!isEqual(data.rect, newRect)) {
data.rect = newRect;
changedRectsData.push(data);
}
});
changedRectsData.forEach((data) => {
data.callbacks.forEach((callback) => callback(data.rect));
});
rafId = requestAnimationFrame(loop);
function getLoopFn(scope) {
const isEqual = getEqualityFn(scope);
return function loop() {
const changedRectsData = [];
observedElements.forEach((data, element) => {
const newRect = element.getBoundingClientRect();
if (!isEqual(data.rect, newRect)) {
data.rect = newRect;
changedRectsData.push(data);
}
});
changedRectsData.forEach((data) => {
data.callbacks.forEach((callback) => callback(data.rect));
});
rafId = requestAnimationFrame(loop);
};
}
function isEqual(rect1, rect2) {
return rect1.width === rect2.width && rect1.height === rect2.height && rect1.top === rect2.top && rect1.right === rect2.right && rect1.bottom === rect2.bottom && rect1.left === rect2.left;
var isEqualSize = (a, b) => a.width === b.width && a.height === b.height;
var isEqualPosition = (a, b) => a.top === b.top && a.right === b.right && a.bottom === b.bottom && a.left === b.left;
var isEqualRect = (a, b) => isEqualSize(a, b) && isEqualPosition(a, b);
function getEqualityFn(scope) {
if (scope === "size")
return isEqualSize;
if (scope === "position")
return isEqualPosition;
return isEqualRect;
}

@@ -83,0 +89,0 @@ // Annotate the CommonJS export names for ESM import in node:

{
"name": "@zag-js/element-rect",
"version": "0.0.0-dev-20230202113057",
"version": "0.0.0-dev-20230326002806",
"description": "observe element's rect over time",

@@ -5,0 +5,0 @@ "keywords": [

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc