save some work

pull/17819/head
Rich Harris 7 months ago
parent c04f69b5f8
commit 6e8c746b58

@ -132,11 +132,13 @@ function pause_effects(state, to_destroy, controlled_anchor) {
* @param {boolean} remove_dom
*/
function destroy_effects(state, to_destroy, remove_dom = true) {
/** @type {Set<Effect>} */
var preserved_effects = new Set();
/** @type {Set<Effect> | undefined} */
var preserved_effects;
// The loop-in-a-loop isn't ideal, but we should only hit this in relatively rare cases
if (state.pending.size > 0) {
preserved_effects = new Set();
for (const keys of state.pending.values()) {
for (const key of keys) {
preserved_effects.add(/** @type {EachItem} */ (state.items.get(key)).e);
@ -147,7 +149,7 @@ function destroy_effects(state, to_destroy, remove_dom = true) {
for (var i = 0; i < to_destroy.length; i++) {
var e = to_destroy[i];
if (preserved_effects.has(e)) {
if (preserved_effects?.has(e)) {
e.f |= EFFECT_OFFSCREEN;
const fragment = document.createDocumentFragment();

Loading…
Cancel
Save