@solid-primitives/memo
Advanced tools
Comparing version 1.1.1 to 1.1.2
@@ -1,2 +0,2 @@ | ||
import { getOwner, onCleanup, createRoot, createComputed, untrack, createSignal, on, createMemo, getListener, runWithOwner } from 'solid-js'; | ||
import { getOwner, onCleanup, untrack, createRoot, createComputed, createSignal, on, createMemo, getListener, runWithOwner } from 'solid-js'; | ||
import { debounce, throttle } from '@solid-primitives/scheduled'; | ||
@@ -12,13 +12,19 @@ import { noop } from '@solid-primitives/utils'; | ||
const owner = getOwner(); | ||
const disposers = []; | ||
const disposers = /* @__PURE__ */ new Set(); | ||
let trackers = 0; | ||
let disposed = false; | ||
onCleanup(() => { | ||
for (const fn of disposers) | ||
fn(); | ||
disposers.length = 0; | ||
disposers.clear(); | ||
disposed = true; | ||
}); | ||
let trackers = 0; | ||
return (tracking) => { | ||
if (disposed) { | ||
untrack(tracking); | ||
return; | ||
} | ||
trackers++; | ||
createRoot((dispose) => { | ||
disposers.push(dispose); | ||
disposers.add(dispose); | ||
let init = true; | ||
@@ -33,2 +39,3 @@ createComputed(() => { | ||
dispose(); | ||
disposers.delete(dispose); | ||
}, options); | ||
@@ -119,11 +126,16 @@ }, owner); | ||
let dispose; | ||
onCleanup(() => dispose == null ? void 0 : dispose()); | ||
let disposed = false; | ||
onCleanup(() => { | ||
dispose && dispose(); | ||
disposed = true; | ||
}); | ||
const track = createPureReaction(() => dirty = !memo); | ||
return () => { | ||
if (!getListener()) { | ||
if (disposed || !getListener()) { | ||
if (memo) | ||
return memo(); | ||
if (dirty) | ||
if (dirty) { | ||
track(() => lastest = calc(lastest)); | ||
dirty = false; | ||
dirty = false; | ||
} | ||
return lastest; | ||
@@ -130,0 +142,0 @@ } |
{ | ||
"name": "@solid-primitives/memo", | ||
"version": "1.1.1", | ||
"version": "1.1.2", | ||
"description": "Collection of custom memo primitives. They extend Solid's createMemo functionality while keeping the usage similar.", | ||
@@ -5,0 +5,0 @@ "author": "Damian Tarnawski @thetarnav <gthetarnav@gmail.com>", |
Sorry, the diff of this file is not supported yet
45284
737