remove transition

This commit is contained in:
2026-04-08 01:40:42 +02:00
parent d508a99290
commit 4e59bcb460

View File

@@ -10,7 +10,6 @@ const tick = () => {
isScheduled = false; isScheduled = false;
} }
// Helper para extraer valor de signals o funciones
const unwrap = (v) => (v?._isSig ? v.value : (isFn(v) ? v() : v)); const unwrap = (v) => (v?._isSig ? v.value : (isFn(v) ? v() : v));
export const effect = (fn, is_scope = false) => { export const effect = (fn, is_scope = false) => {
@@ -242,36 +241,6 @@ export const Router = (routes, trans = {}) => {
}); });
}; };
export const Transition = ({ enter: e, idle, leave: l }, { children: [c] }) => {
const decorate = (el) => {
if (!isNode(el)) return el;
const add = (cl) => cl && el.classList.add(...cl.split(' '));
const rem = (cl) => cl && el.classList.remove(...cl.split(' '));
el.$on = () => {
if (!e) return;
requestAnimationFrame(() => {
add(e[1]);
requestAnimationFrame(() => {
add(e[0]); rem(e[1]); add(e[2]);
el.addEventListener('transitionend', () => { rem(e[2]); rem(e[0]); add(idle); }, { once: true });
});
});
};
el.$off = () => {
if (!l) return el.remove();
return new Promise(res => {
rem(idle); add(l[1]);
requestAnimationFrame(() => {
add(l[0]); rem(l[1]); add(l[2]);
el.addEventListener('transitionend', () => { rem(l[2]); rem(l[0]); res(); }, { once: true });
});
});
};
return el;
}
return isFn(c) ? () => decorate(c()) : decorate(c);
}
export const mount = (root, target, props = {}) => { export const mount = (root, target, props = {}) => {
const container = typeof target === 'string' ? document.querySelector(target) : target; const container = typeof target === 'string' ? document.querySelector(target) : target;
if (container.firstElementChild) remove(container.firstElementChild); if (container.firstElementChild) remove(container.firstElementChild);
@@ -282,4 +251,4 @@ export const mount = (root, target, props = {}) => {
return () => remove(el); return () => remove(el);
}; };
export default { signal, effect, reactive, computed, watch, persist, storage, h, mount, If, For, Router, Transition, onMount, onUnmount, provide, inject }; export default { signal, effect, reactive, computed, watch, persist, storage, h, mount, If, For, Router, onMount, onUnmount, provide, inject };