@solid-primitives/resize-observer
Advanced tools
+11
-9
@@ -6,3 +6,3 @@ import { makeEventListener } from "@solid-primitives/event-listener"; | ||
| import { createEffect, onCleanup, sharedConfig } from "solid-js"; | ||
| import { isServer } from "solid-js/web"; | ||
| import { isServer } from "@solidjs/web"; | ||
| /** | ||
@@ -53,7 +53,7 @@ * Instantiate a new ResizeObserver that automatically get's disposed on cleanup. | ||
| }, options); | ||
| createEffect((prev) => { | ||
| const refs = filterNonNullable(asArray(access(targets))); | ||
| let prev = []; | ||
| createEffect(() => filterNonNullable(asArray(access(targets))), (refs) => { | ||
| handleDiffArray(refs, prev, observe, unobserve); | ||
| return refs; | ||
| }, []); | ||
| prev = refs; | ||
| }); | ||
| } | ||
@@ -118,13 +118,15 @@ const WINDOW_SIZE_FALLBACK = { width: 0, height: 0 }; | ||
| const isFn = typeof target === "function"; | ||
| const [size, setSize] = createStaticStore(sharedConfig.context || isFn ? ELEMENT_SIZE_FALLBACK : getElementSize(target)); | ||
| const [size, setSize] = createStaticStore(sharedConfig.hydrating || isFn ? ELEMENT_SIZE_FALLBACK : getElementSize(target)); | ||
| const ro = new ResizeObserver(([e]) => setSize(getElementSize(e.target))); | ||
| onCleanup(() => ro.disconnect()); | ||
| if (isFn) { | ||
| createEffect(() => { | ||
| const el = target(); | ||
| createEffect(() => target(), (el) => { | ||
| if (el) { | ||
| setSize(getElementSize(el)); | ||
| ro.observe(el); | ||
| onCleanup(() => ro.unobserve(el)); | ||
| return () => ro.unobserve(el); | ||
| } | ||
| else { | ||
| setSize(ELEMENT_SIZE_FALLBACK); | ||
| } | ||
| }); | ||
@@ -131,0 +133,0 @@ } |
+11
-8
| { | ||
| "name": "@solid-primitives/resize-observer", | ||
| "version": "2.1.5", | ||
| "version": "4.0.0-next.0", | ||
| "description": "Reactive primitives for observing resizing of HTML elements.", | ||
@@ -23,3 +23,4 @@ "author": "Moshe Udimar", | ||
| ], | ||
| "category": "Display & Media" | ||
| "category": "Display & Media", | ||
| "gzip": 1461 | ||
| }, | ||
@@ -49,13 +50,15 @@ "files": [ | ||
| "dependencies": { | ||
| "@solid-primitives/rootless": "^1.5.3", | ||
| "@solid-primitives/static-store": "^0.1.3", | ||
| "@solid-primitives/event-listener": "^2.4.5", | ||
| "@solid-primitives/utils": "^6.4.0" | ||
| "@solid-primitives/event-listener": "^3.0.0-next.0", | ||
| "@solid-primitives/rootless": "^2.0.0-next.0", | ||
| "@solid-primitives/static-store": "^1.0.0-next.0", | ||
| "@solid-primitives/utils": "^7.0.0-next.0" | ||
| }, | ||
| "peerDependencies": { | ||
| "solid-js": "^1.6.12" | ||
| "@solidjs/web": "^2.0.0-beta.15", | ||
| "solid-js": "^2.0.0-beta.15" | ||
| }, | ||
| "typesVersions": {}, | ||
| "devDependencies": { | ||
| "solid-js": "^1.9.7" | ||
| "@solidjs/web": "2.0.0-beta.15", | ||
| "solid-js": "2.0.0-beta.15" | ||
| }, | ||
@@ -62,0 +65,0 @@ "scripts": { |
+6
-5
@@ -7,5 +7,6 @@ <p> | ||
| [](https://bundlephobia.com/package/@solid-primitives/resize-observer) | ||
| [](https://bundlephobia.com/package/@solid-primitives/resize-observer) | ||
| [](https://www.npmjs.com/package/@solid-primitives/resize-observer) | ||
| [](https://github.com/solidjs-community/solid-primitives#contribution-process) | ||
| [](https://vitest.dev) | ||
@@ -79,4 +80,4 @@ Reactive primitives for observing resizing of HTML elements. | ||
| // can in onMount if the target variable isn't yet populated | ||
| onMount(() => { | ||
| // can use onSettled if the target variable isn't yet populated | ||
| onSettled(() => { | ||
| createResizeObserver(ref, ({ width, height }, el) => { | ||
@@ -100,6 +101,6 @@ if (el === ref) console.log(width, height); | ||
| // createResizeObserver supports top-lever store arrays too | ||
| // createResizeObserver supports top-level store arrays too | ||
| const [targets, setTargets] = createStore([document.body]); | ||
| createResizeObserver(targets, ({ width, height }, el) => {}); | ||
| setTargets(targets.length, element); | ||
| setTargets(prev => [...prev, element]); | ||
| ``` | ||
@@ -106,0 +107,0 @@ |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
17478
1.84%224
0.9%186
0.54%6
20%2
100%1
Infinity%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed