@solid-primitives/keyed
Advanced tools
Comparing version 1.1.6 to 1.1.7
@@ -5,16 +5,20 @@ import { onCleanup, $TRACK, untrack, createRoot, createSignal, createMemo, mapArray, on } from 'solid-js'; | ||
var FALLBACK = Symbol("fallback"); | ||
function dispose(list) { | ||
for (const o of list) | ||
o.dispose(); | ||
} | ||
function keyArray(items, keyFn, mapFn, options = {}) { | ||
const prev = /* @__PURE__ */ new Map(); | ||
onCleanup(() => prev.forEach((v) => v.dispose())); | ||
onCleanup(() => dispose(prev.values())); | ||
return () => { | ||
let list = items() || []; | ||
const list = items() || []; | ||
list[$TRACK]; | ||
return untrack(() => { | ||
if (!list.length) { | ||
prev.forEach((v) => v.dispose()); | ||
dispose(prev.values()); | ||
prev.clear(); | ||
if (!options.fallback) | ||
return []; | ||
const fb2 = createRoot((dispose) => { | ||
prev.set(FALLBACK, { dispose }); | ||
const fb2 = createRoot((dispose2) => { | ||
prev.set(FALLBACK, { dispose: dispose2 }); | ||
return options.fallback(); | ||
@@ -49,6 +53,6 @@ }); | ||
} | ||
prevKeys.forEach((key) => { | ||
for (const key of prevKeys) { | ||
prev.get(key)?.dispose(); | ||
prev.delete(key); | ||
}); | ||
} | ||
return result; | ||
@@ -58,5 +62,5 @@ }); | ||
function addNewItem(list, item, i, key) { | ||
createRoot((dispose) => { | ||
createRoot((dispose2) => { | ||
const [getItem, setItem] = createSignal(item); | ||
const save = { setItem, dispose }; | ||
const save = { setItem, dispose: dispose2 }; | ||
if (mapFn.length > 1) { | ||
@@ -75,9 +79,10 @@ const [index, setIndex] = createSignal(i); | ||
const { by } = props; | ||
const mapped = keyArray( | ||
() => props.each, | ||
typeof by === "function" ? by : (v) => v[by], | ||
props.children, | ||
"fallback" in props ? { fallback: () => props.fallback } : void 0 | ||
return createMemo( | ||
keyArray( | ||
() => props.each, | ||
typeof by === "function" ? by : (v) => v[by], | ||
props.children, | ||
"fallback" in props ? { fallback: () => props.fallback } : void 0 | ||
) | ||
); | ||
return createMemo(mapped); | ||
} | ||
@@ -84,0 +89,0 @@ function Entries(props) { |
@@ -23,9 +23,10 @@ import { createMemo, mapArray, on } from 'solid-js'; | ||
const { by } = props; | ||
const mapped = keyArray( | ||
() => props.each, | ||
typeof by === "function" ? by : (v) => v[by], | ||
props.children, | ||
"fallback" in props ? { fallback: () => props.fallback } : void 0 | ||
return createMemo( | ||
keyArray( | ||
() => props.each, | ||
typeof by === "function" ? by : (v) => v[by], | ||
props.children, | ||
"fallback" in props ? { fallback: () => props.fallback } : void 0 | ||
) | ||
); | ||
return createMemo(mapped); | ||
} | ||
@@ -32,0 +33,0 @@ function Entries(props) { |
{ | ||
"name": "@solid-primitives/keyed", | ||
"version": "1.1.6", | ||
"version": "1.1.7", | ||
"description": "Control Flow primitives and components that require specifying explicit keys to identify or rerender elements.", | ||
@@ -5,0 +5,0 @@ "author": "Damian Tarnawski @thetarnav <gthetarnav@gmail.com>", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
22253
398