"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { Transition: () => Transition, TransitionGroup: () => TransitionGroup }); module.exports = __toCommonJS(src_exports); // src/common.ts var import_solid_js = require("solid-js"); function createClassnames(props) { return (0, import_solid_js.createMemo)(() => { const name = props.name || "s"; return { enterActive: (props.enterActiveClass || name + "-enter-active").split(" "), enter: (props.enterClass || name + "-enter").split(" "), enterTo: (props.enterToClass || name + "-enter-to").split(" "), exitActive: (props.exitActiveClass || name + "-exit-active").split(" "), exit: (props.exitClass || name + "-exit").split(" "), exitTo: (props.exitToClass || name + "-exit-to").split(" "), move: (props.moveClass || name + "-move").split(" ") }; }); } function nextFrame(fn) { requestAnimationFrame(() => requestAnimationFrame(fn)); } function enterTransition(classes, events, el, done) { const { onBeforeEnter, onEnter, onAfterEnter } = events; onBeforeEnter?.(el); el.classList.add(...classes.enter); el.classList.add(...classes.enterActive); queueMicrotask(() => { if (!el.parentNode) return done?.(); onEnter?.(el, () => endTransition()); }); nextFrame(() => { el.classList.remove(...classes.enter); el.classList.add(...classes.enterTo); if (!onEnter || onEnter.length < 2) { el.addEventListener("transitionend", endTransition); el.addEventListener("animationend", endTransition); } }); function endTransition(e) { if (!e || e.target === el) { done?.(); el.removeEventListener("transitionend", endTransition); el.removeEventListener("animationend", endTransition); el.classList.remove(...classes.enterActive); el.classList.remove(...classes.enterTo); onAfterEnter?.(el); } } } function exitTransition(classes, events, el, done) { const { onBeforeExit, onExit, onAfterExit } = events; if (!el.parentNode) return done?.(); onBeforeExit?.(el); el.classList.add(...classes.exit); el.classList.add(...classes.exitActive); onExit?.(el, () => endTransition()); nextFrame(() => { el.classList.remove(...classes.exit); el.classList.add(...classes.exitTo); if (!onExit || onExit.length < 2) { el.addEventListener("transitionend", endTransition); el.addEventListener("animationend", endTransition); } }); function endTransition(e) { if (!e || e.target === el) { done?.(); el.removeEventListener("transitionend", endTransition); el.removeEventListener("animationend", endTransition); el.classList.remove(...classes.exitActive); el.classList.remove(...classes.exitTo); onAfterExit?.(el); } } } // src/Transition.ts var import_transition_group = require("@solid-primitives/transition-group"); var import_refs = require("@solid-primitives/refs"); var TRANSITION_MODE_MAP = { inout: "in-out", outin: "out-in" }; var Transition = (props) => { const classnames = createClassnames(props); return (0, import_transition_group.createSwitchTransition)( (0, import_refs.resolveFirst)(() => props.children), { mode: TRANSITION_MODE_MAP[props.mode], appear: props.appear, onEnter(el, done) { enterTransition(classnames(), props, el, done); }, onExit(el, done) { exitTransition(classnames(), props, el, done); } } ); }; // src/TransitionGroup.ts var import_transition_group2 = require("@solid-primitives/transition-group"); var import_refs2 = require("@solid-primitives/refs"); var TransitionGroup = (props) => { const classnames = createClassnames(props); return (0, import_transition_group2.createListTransition)((0, import_refs2.resolveElements)(() => props.children).toArray, { appear: props.appear, exitMethod: "keep-index", onChange({ added, removed, finishRemoved, list }) { const classes = classnames(); for (const el of added) { enterTransition(classes, props, el); } const toMove = []; for (const el of list) { if (el.isConnected && (el instanceof HTMLElement || el instanceof SVGElement)) { toMove.push({ el, rect: el.getBoundingClientRect() }); } } queueMicrotask(() => { const moved = []; for (const { el, rect } of toMove) { if (el.isConnected) { const newRect = el.getBoundingClientRect(), dX = rect.left - newRect.left, dY = rect.top - newRect.top; if (dX || dY) { el.style.transform = `translate(${dX}px, ${dY}px)`; el.style.transitionDuration = "0s"; moved.push(el); } } } document.body.offsetHeight; for (const el of moved) { let endTransition2 = function(e) { if (e.target === el || /transform$/.test(e.propertyName)) { el.removeEventListener("transitionend", endTransition2); el.classList.remove(...classes.move); } }; var endTransition = endTransition2; el.classList.add(...classes.move); el.style.transform = el.style.transitionDuration = ""; el.addEventListener("transitionend", endTransition2); } }); for (const el of removed) { exitTransition(classes, props, el, () => finishRemoved([el])); } } }); }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Transition, TransitionGroup });