@daaler/jutils 0.4.2 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  export type LayoutStyle = ["large" | "narrow" | "short", "top" | "left"];
2
+ export type Dimensions = [number, number];
2
3
  export type Options = {
3
4
  widthThreshold?: number;
4
5
  heightThreshold?: number;
@@ -0,0 +1,8 @@
1
+ import { RefObject } from "react";
2
+ import { type Dimensions } from "./types.js";
3
+ /**
4
+ * Measure an element in the browser ui
5
+ * @param element Element to measure
6
+ * @return Width and height of the element
7
+ */
8
+ export default function useElementDimensions(element: RefObject<HTMLElement>): Dimensions;
@@ -0,0 +1,23 @@
1
+ import { useState, useLayoutEffect } from "react";
2
+ /**
3
+ * Measure an element in the browser ui
4
+ * @param element Element to measure
5
+ * @return Width and height of the element
6
+ */
7
+ export default function useElementDimensions(element) {
8
+ const [dimensions, setDimensions] = useState([0, 0]);
9
+ const handleResize = () => {
10
+ if (!element.current)
11
+ return;
12
+ const { clientWidth, clientHeight } = element.current;
13
+ setDimensions([clientWidth, clientHeight]);
14
+ };
15
+ useLayoutEffect(() => {
16
+ handleResize();
17
+ window.addEventListener("resize", handleResize);
18
+ return () => { window.removeEventListener("resize", handleResize); };
19
+ }, [element]);
20
+ return dimensions;
21
+ }
22
+ ;
23
+ //# sourceMappingURL=useElementDimensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useElementDimensions.js","sourceRoot":"","sources":["../../src/react/useElementDimensions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAC,eAAe,EAAY,MAAM,OAAO,CAAC;AAK3D;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,OAA8B;IAC1E,MAAM,CAAE,UAAU,EAAC,aAAa,CAAE,GAAG,QAAQ,CAAa,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAA;IAEhE,MAAM,YAAY,GAAG,GAAG,EAAE;QACzB,IAAG,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO;QAC5B,MAAM,EAAE,WAAW,EAAC,YAAY,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QACrD,aAAa,CAAC,CAAE,WAAW,EAAC,YAAY,CAAE,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,eAAe,CAAC,GAAG,EAAE;QACpB,YAAY,EAAE,CAAC;QACf,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAC/C,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA,CAAC,CAAC,CAAA;IACpE,CAAC,EAAC,CAAE,OAAO,CAAE,CAAC,CAAA;IAEd,OAAO,UAAU,CAAC;AACnB,CAAC;AAAA,CAAC"}
package/dist/react.d.ts CHANGED
@@ -2,5 +2,6 @@ export * from "./browser.js";
2
2
  export { default as useToggle } from "./react/useToggle.js";
3
3
  export { default as useLayoutStyle } from "./react/useLayoutStyle.js";
4
4
  export { default as useWindowLayoutStyle } from "./react/useWindowLayoutStyle.js";
5
+ export { default as useElementDimensions } from "./react/useElementDimensions.js";
5
6
  export { default as useJLocation } from "./react/useJLocation.js";
6
7
  export { default as useJNavigate } from "./react/useJNavigate.js";
package/dist/react.js CHANGED
@@ -2,6 +2,7 @@ export * from "./browser.js";
2
2
  export { default as useToggle } from "./react/useToggle.js";
3
3
  export { default as useLayoutStyle } from "./react/useLayoutStyle.js";
4
4
  export { default as useWindowLayoutStyle } from "./react/useWindowLayoutStyle.js";
5
+ export { default as useElementDimensions } from "./react/useElementDimensions.js";
5
6
  export { default as useJLocation } from "./react/useJLocation.js";
6
7
  export { default as useJNavigate } from "./react/useJNavigate.js";
7
8
  //# sourceMappingURL=react.js.map
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daaler/jutils",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "Utility functions for js",
5
5
  "author": "Jarno Parviainen - jarno.parviainen@gmail.com",
6
6
  "license": "UNLICENSED",