Socket
Socket
Sign inDemoInstall

@tamagui/animate-presence

Package Overview
Dependencies
Maintainers
1
Versions
1106
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tamagui/animate-presence - npm Package Compare versions

Comparing version 1.0.0-beta.207 to 1.0.0-beta.208

dist/cjs/useEntering.js

79

dist/cjs/AnimatePresence.js

@@ -28,6 +28,6 @@ var __create = Object.create;

var import_core = require("@tamagui/core");
var React = __toESM(require("react"));
var import_react = require("react");
var import_react = __toESM(require("react"));
var import_LayoutGroupContext = require("./LayoutGroupContext");
var import_PresenceChild = require("./PresenceChild");
import_react.default["keep"];
const getChildKey = /* @__PURE__ */ __name((child) => child.key || "", "getChildKey");

@@ -37,3 +37,3 @@ const isDev = process.env.NODE_ENV !== "production";

const seenChildren = isDev ? /* @__PURE__ */ new Set() : null;
for (const child of children) {
children.forEach((child) => {
const key = getChildKey(child);

@@ -45,3 +45,3 @@ if (isDev && seenChildren && seenChildren.has(key)) {

allChildren.set(key, child);
}
});
}

@@ -60,3 +60,4 @@ __name(updateChildLookup, "updateChildLookup");

children,
custom,
enterVariant,
exitVariant,
initial = true,

@@ -71,3 +72,6 @@ onExitComplete,

forceRender = forceRenderLayoutGroup;
const isMounted = (0, import_core.useIsMounted)();
const [isMounted, setIsMounted] = (0, import_react.useState)(false);
(0, import_react.useEffect)(() => {
setIsMounted(true);
}, []);
const filteredChildren = onlyElements(children);

@@ -90,5 +94,7 @@ let childrenToRender = filteredChildren;

if (isInitialRender.current) {
return /* @__PURE__ */ React.createElement(React.Fragment, null, childrenToRender.map((child) => /* @__PURE__ */ React.createElement(import_PresenceChild.PresenceChild, {
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, childrenToRender.map((child) => /* @__PURE__ */ import_react.default.createElement(import_PresenceChild.PresenceChild, {
key: getChildKey(child),
isPresent: true,
isEntering: true,
exitVariant,
enterVariant,
initial: initial ? void 0 : false,

@@ -111,38 +117,37 @@ presenceAffectsLayout

}
for (const key of exiting) {
if (targetKeys.indexOf(key) !== -1) {
continue;
}
exiting.forEach((key) => {
if (targetKeys.indexOf(key) !== -1)
return;
const child = allChildren.get(key);
if (!child) {
continue;
}
if (!child)
return;
const insertionIndex = presentKeys.indexOf(key);
const onExit = /* @__PURE__ */ __name(() => {
allChildren.delete(key);
exiting.delete(key);
const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);
presentChildren.current.splice(removeIndex, 1);
if (!exiting.size) {
presentChildren.current = filteredChildren;
if (isMounted.current === false) {
return;
childrenToRender.splice(insertionIndex, 0, /* @__PURE__ */ import_react.default.createElement(import_PresenceChild.PresenceChild, {
key: getChildKey(child),
isEntering: false,
onExitComplete: () => {
allChildren.delete(key);
exiting.delete(key);
const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);
presentChildren.current.splice(removeIndex, 1);
if (!exiting.size) {
presentChildren.current = filteredChildren;
if (isMounted === false)
return;
forceRender();
onExitComplete == null ? void 0 : onExitComplete();
}
forceRender();
onExitComplete == null ? void 0 : onExitComplete();
}
}, "onExit");
childrenToRender.splice(insertionIndex, 0, /* @__PURE__ */ React.createElement(import_PresenceChild.PresenceChild, {
key: getChildKey(child),
isPresent: false,
onExitComplete: onExit,
custom,
},
exitVariant,
enterVariant,
presenceAffectsLayout
}, child));
}
});
childrenToRender = childrenToRender.map((child) => {
const key = child.key;
return exiting.has(key) ? child : /* @__PURE__ */ React.createElement(import_PresenceChild.PresenceChild, {
return exiting.has(key) ? child : /* @__PURE__ */ import_react.default.createElement(import_PresenceChild.PresenceChild, {
key: getChildKey(child),
isPresent: true,
isEntering: void 0,
exitVariant,
enterVariant,
presenceAffectsLayout

@@ -154,4 +159,4 @@ }, child);

}
return /* @__PURE__ */ React.createElement(React.Fragment, null, exiting.size ? childrenToRender : childrenToRender.map((child) => (0, import_react.cloneElement)(child)));
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, exiting.size ? childrenToRender : childrenToRender.map((child) => (0, import_react.cloneElement)(child)));
}, "AnimatePresence");
//# sourceMappingURL=AnimatePresence.js.map

@@ -25,4 +25,4 @@ var __defProp = Object.defineProperty;

__reExport(src_exports, require("./AnimatePresence"), module.exports);
__reExport(src_exports, require("./usePresence"), module.exports);
__reExport(src_exports, require("./useEntering"), module.exports);
var import_AnimatePresenceContext = require("./AnimatePresenceContext");
//# sourceMappingURL=index.js.map

@@ -34,5 +34,6 @@ var __create = Object.create;

initial,
isPresent,
isEntering,
onExitComplete,
custom,
exitVariant,
enterVariant,
presenceAffectsLayout

@@ -42,30 +43,33 @@ }) => {

const id = (0, import_utils.useId)();
const context = React.useMemo(() => ({
id,
initial,
isPresent,
custom,
onExitComplete: (childId) => {
presenceChildren.set(childId, true);
for (const isComplete of presenceChildren.values()) {
if (!isComplete) {
return;
const context = React.useMemo(() => {
return {
id,
initial,
isEntering,
exitVariant,
enterVariant,
onExitComplete: (childId) => {
console.log("on exist complete", childId);
presenceChildren.set(childId, true);
for (const isComplete of presenceChildren.values()) {
if (!isComplete) {
return;
}
}
onExitComplete == null ? void 0 : onExitComplete();
},
register: (childId) => {
presenceChildren.set(childId, false);
return () => presenceChildren.delete(childId);
}
onExitComplete == null ? void 0 : onExitComplete();
},
register: (childId) => {
presenceChildren.set(childId, false);
return () => presenceChildren.delete(childId);
}
}), presenceAffectsLayout ? void 0 : [isPresent]);
};
}, presenceAffectsLayout ? void 0 : [isEntering, onExitComplete, exitVariant, enterVariant]);
React.useMemo(() => {
presenceChildren.forEach((_, key) => presenceChildren.set(key, false));
}, [isPresent]);
}, [isEntering]);
React.useEffect(() => {
if (!isPresent && !presenceChildren.size) {
console.log("on exit complete");
if (isEntering === false && !presenceChildren.size) {
onExitComplete == null ? void 0 : onExitComplete();
}
}, [isPresent]);
}, [isEntering]);
return /* @__PURE__ */ React.createElement(import_AnimatePresenceContext.AnimatePresenceContext.Provider, {

@@ -72,0 +76,0 @@ value: context

var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import {
useForceUpdate,
useIsMounted,
useIsomorphicLayoutEffect,
useUnmountEffect
} from "@tamagui/core";
import * as React from "react";
import {
import { useForceUpdate, useIsomorphicLayoutEffect, useUnmountEffect } from "@tamagui/core";
import React, {
Children,

@@ -15,6 +9,9 @@ cloneElement,

useContext,
useRef
useEffect,
useRef,
useState
} from "react";
import { LayoutGroupContext } from "./LayoutGroupContext";
import { PresenceChild } from "./PresenceChild";
React["keep"];
const getChildKey = /* @__PURE__ */ __name((child) => child.key || "", "getChildKey");

@@ -24,3 +21,3 @@ const isDev = process.env.NODE_ENV !== "production";

const seenChildren = isDev ? /* @__PURE__ */ new Set() : null;
for (const child of children) {
children.forEach((child) => {
const key = getChildKey(child);

@@ -32,3 +29,3 @@ if (isDev && seenChildren && seenChildren.has(key)) {

allChildren.set(key, child);
}
});
}

@@ -47,3 +44,4 @@ __name(updateChildLookup, "updateChildLookup");

children,
custom,
enterVariant,
exitVariant,
initial = true,

@@ -58,3 +56,6 @@ onExitComplete,

forceRender = forceRenderLayoutGroup;
const isMounted = useIsMounted();
const [isMounted, setIsMounted] = useState(false);
useEffect(() => {
setIsMounted(true);
}, []);
const filteredChildren = onlyElements(children);

@@ -79,3 +80,5 @@ let childrenToRender = filteredChildren;

key: getChildKey(child),
isPresent: true,
isEntering: true,
exitVariant,
enterVariant,
initial: initial ? void 0 : false,

@@ -98,33 +101,30 @@ presenceAffectsLayout

}
for (const key of exiting) {
if (targetKeys.indexOf(key) !== -1) {
continue;
}
exiting.forEach((key) => {
if (targetKeys.indexOf(key) !== -1)
return;
const child = allChildren.get(key);
if (!child) {
continue;
}
if (!child)
return;
const insertionIndex = presentKeys.indexOf(key);
const onExit = /* @__PURE__ */ __name(() => {
allChildren.delete(key);
exiting.delete(key);
const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);
presentChildren.current.splice(removeIndex, 1);
if (!exiting.size) {
presentChildren.current = filteredChildren;
if (isMounted.current === false) {
return;
}
forceRender();
onExitComplete == null ? void 0 : onExitComplete();
}
}, "onExit");
childrenToRender.splice(insertionIndex, 0, /* @__PURE__ */ React.createElement(PresenceChild, {
key: getChildKey(child),
isPresent: false,
onExitComplete: onExit,
custom,
isEntering: false,
onExitComplete: () => {
allChildren.delete(key);
exiting.delete(key);
const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);
presentChildren.current.splice(removeIndex, 1);
if (!exiting.size) {
presentChildren.current = filteredChildren;
if (isMounted === false)
return;
forceRender();
onExitComplete == null ? void 0 : onExitComplete();
}
},
exitVariant,
enterVariant,
presenceAffectsLayout
}, child));
}
});
childrenToRender = childrenToRender.map((child) => {

@@ -134,3 +134,5 @@ const key = child.key;

key: getChildKey(child),
isPresent: true,
isEntering: void 0,
exitVariant,
enterVariant,
presenceAffectsLayout

@@ -137,0 +139,0 @@ }, child);

export * from "./AnimatePresence";
export * from "./usePresence";
export * from "./useEntering";
import { AnimatePresenceContext } from "./AnimatePresenceContext";

@@ -4,0 +4,0 @@ export {

@@ -10,5 +10,6 @@ var __defProp = Object.defineProperty;

initial,
isPresent,
isEntering,
onExitComplete,
custom,
exitVariant,
enterVariant,
presenceAffectsLayout

@@ -18,30 +19,33 @@ }) => {

const id = useId();
const context = React.useMemo(() => ({
id,
initial,
isPresent,
custom,
onExitComplete: (childId) => {
presenceChildren.set(childId, true);
for (const isComplete of presenceChildren.values()) {
if (!isComplete) {
return;
const context = React.useMemo(() => {
return {
id,
initial,
isEntering,
exitVariant,
enterVariant,
onExitComplete: (childId) => {
console.log("on exist complete", childId);
presenceChildren.set(childId, true);
for (const isComplete of presenceChildren.values()) {
if (!isComplete) {
return;
}
}
onExitComplete == null ? void 0 : onExitComplete();
},
register: (childId) => {
presenceChildren.set(childId, false);
return () => presenceChildren.delete(childId);
}
onExitComplete == null ? void 0 : onExitComplete();
},
register: (childId) => {
presenceChildren.set(childId, false);
return () => presenceChildren.delete(childId);
}
}), presenceAffectsLayout ? void 0 : [isPresent]);
};
}, presenceAffectsLayout ? void 0 : [isEntering, onExitComplete, exitVariant, enterVariant]);
React.useMemo(() => {
presenceChildren.forEach((_, key) => presenceChildren.set(key, false));
}, [isPresent]);
}, [isEntering]);
React.useEffect(() => {
if (!isPresent && !presenceChildren.size) {
console.log("on exit complete");
if (isEntering === false && !presenceChildren.size) {
onExitComplete == null ? void 0 : onExitComplete();
}
}, [isPresent]);
}, [isEntering]);
return /* @__PURE__ */ React.createElement(AnimatePresenceContext.Provider, {

@@ -48,0 +52,0 @@ value: context

var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
import {
useForceUpdate,
useIsMounted,
useIsomorphicLayoutEffect,
useUnmountEffect
} from "@tamagui/core";
import {
import { useForceUpdate, useIsomorphicLayoutEffect, useUnmountEffect } from "@tamagui/core";
import React, {
Children,

@@ -14,6 +9,9 @@ cloneElement,

useContext,
useRef
useEffect,
useRef,
useState
} from "react";
import { LayoutGroupContext } from "./LayoutGroupContext";
import { PresenceChild } from "./PresenceChild";
React["keep"];
const getChildKey = /* @__PURE__ */ __name((child) => child.key || "", "getChildKey");

@@ -23,3 +21,3 @@ const isDev = process.env.NODE_ENV !== "production";

const seenChildren = isDev ? /* @__PURE__ */ new Set() : null;
for (const child of children) {
children.forEach((child) => {
const key = getChildKey(child);

@@ -31,3 +29,3 @@ if (isDev && seenChildren && seenChildren.has(key)) {

allChildren.set(key, child);
}
});
}

@@ -46,3 +44,4 @@ __name(updateChildLookup, "updateChildLookup");

children,
custom,
enterVariant,
exitVariant,
initial = true,

@@ -57,3 +56,6 @@ onExitComplete,

forceRender = forceRenderLayoutGroup;
const isMounted = useIsMounted();
const [isMounted, setIsMounted] = useState(false);
useEffect(() => {
setIsMounted(true);
}, []);
const filteredChildren = onlyElements(children);

@@ -76,3 +78,3 @@ let childrenToRender = filteredChildren;

if (isInitialRender.current) {
return <>{childrenToRender.map((child) => <PresenceChild key={getChildKey(child)} isPresent initial={initial ? void 0 : false} presenceAffectsLayout={presenceAffectsLayout}>{child}</PresenceChild>)}</>;
return <>{childrenToRender.map((child) => <PresenceChild key={getChildKey(child)} isEntering exitVariant={exitVariant} enterVariant={enterVariant} initial={initial ? void 0 : false} presenceAffectsLayout={presenceAffectsLayout}>{child}</PresenceChild>)}</>;
}

@@ -92,12 +94,10 @@ childrenToRender = [...childrenToRender];

}
for (const key of exiting) {
if (targetKeys.indexOf(key) !== -1) {
continue;
}
exiting.forEach((key) => {
if (targetKeys.indexOf(key) !== -1)
return;
const child = allChildren.get(key);
if (!child) {
continue;
}
if (!child)
return;
const insertionIndex = presentKeys.indexOf(key);
const onExit = /* @__PURE__ */ __name(() => {
childrenToRender.splice(insertionIndex, 0, <PresenceChild key={getChildKey(child)} isEntering={false} onExitComplete={() => {
allChildren.delete(key);

@@ -109,14 +109,12 @@ exiting.delete(key);

presentChildren.current = filteredChildren;
if (isMounted.current === false) {
if (isMounted === false)
return;
}
forceRender();
onExitComplete == null ? void 0 : onExitComplete();
}
}, "onExit");
childrenToRender.splice(insertionIndex, 0, <PresenceChild key={getChildKey(child)} isPresent={false} onExitComplete={onExit} custom={custom} presenceAffectsLayout={presenceAffectsLayout}>{child}</PresenceChild>);
}
}} exitVariant={exitVariant} enterVariant={enterVariant} presenceAffectsLayout={presenceAffectsLayout}>{child}</PresenceChild>);
});
childrenToRender = childrenToRender.map((child) => {
const key = child.key;
return exiting.has(key) ? child : <PresenceChild key={getChildKey(child)} isPresent presenceAffectsLayout={presenceAffectsLayout}>{child}</PresenceChild>;
return exiting.has(key) ? child : <PresenceChild key={getChildKey(child)} isEntering={void 0} exitVariant={exitVariant} enterVariant={enterVariant} presenceAffectsLayout={presenceAffectsLayout}>{child}</PresenceChild>;
});

@@ -123,0 +121,0 @@ if (process.env.NODE_ENV !== "production" && exitBeforeEnter && childrenToRender.length > 1) {

export * from "./AnimatePresence";
export * from "./usePresence";
export * from "./useEntering";
import { AnimatePresenceContext } from "./AnimatePresenceContext";

@@ -4,0 +4,0 @@ export {

@@ -10,5 +10,6 @@ var __defProp = Object.defineProperty;

initial,
isPresent,
isEntering,
onExitComplete,
custom,
exitVariant,
enterVariant,
presenceAffectsLayout

@@ -18,30 +19,33 @@ }) => {

const id = useId();
const context = React.useMemo(() => ({
id,
initial,
isPresent,
custom,
onExitComplete: (childId) => {
presenceChildren.set(childId, true);
for (const isComplete of presenceChildren.values()) {
if (!isComplete) {
return;
const context = React.useMemo(() => {
return {
id,
initial,
isEntering,
exitVariant,
enterVariant,
onExitComplete: (childId) => {
console.log("on exist complete", childId);
presenceChildren.set(childId, true);
for (const isComplete of presenceChildren.values()) {
if (!isComplete) {
return;
}
}
onExitComplete == null ? void 0 : onExitComplete();
},
register: (childId) => {
presenceChildren.set(childId, false);
return () => presenceChildren.delete(childId);
}
onExitComplete == null ? void 0 : onExitComplete();
},
register: (childId) => {
presenceChildren.set(childId, false);
return () => presenceChildren.delete(childId);
}
}), presenceAffectsLayout ? void 0 : [isPresent]);
};
}, presenceAffectsLayout ? void 0 : [isEntering, onExitComplete, exitVariant, enterVariant]);
React.useMemo(() => {
presenceChildren.forEach((_, key) => presenceChildren.set(key, false));
}, [isPresent]);
}, [isEntering]);
React.useEffect(() => {
if (!isPresent && !presenceChildren.size) {
console.log("on exit complete");
if (isEntering === false && !presenceChildren.size) {
onExitComplete == null ? void 0 : onExitComplete();
}
}, [isPresent]);
}, [isEntering]);
return <AnimatePresenceContext.Provider value={context}>{children}</AnimatePresenceContext.Provider>;

@@ -48,0 +52,0 @@ }, "PresenceChild");

{
"name": "@tamagui/animate-presence",
"version": "1.0.0-beta.207+3fd10ea6",
"version": "1.0.0-beta.208+f5ae07b4",
"source": "src/index.ts",

@@ -15,6 +15,6 @@ "license": "MIT",

"dependencies": {
"@tamagui/core": "^1.0.0-beta.207+3fd10ea6"
"@tamagui/core": "^1.0.0-beta.208+f5ae07b4"
},
"devDependencies": {
"@tamagui/build": "^1.0.0-beta.207+3fd10ea6"
"@tamagui/build": "^1.0.0-beta.208+f5ae07b4"
},

@@ -30,3 +30,3 @@ "scripts": {

},
"gitHead": "3fd10ea6d026fac0339fbc1a501ee304f4985b05"
"gitHead": "f5ae07b474577e5546139d5a187dde4e1d08df4b"
}

@@ -1,5 +0,6 @@

import * as React from 'react';
import React from 'react';
export interface AnimatePresenceProps {
initial?: boolean;
custom?: any;
exitVariant?: string | null;
enterVariant?: string | null;
onExitComplete?: () => void;

@@ -9,3 +10,3 @@ exitBeforeEnter?: boolean;

}
export declare const AnimatePresence: React.FunctionComponent<AnimatePresenceProps>;
export declare const AnimatePresence: React.FunctionComponent<React.PropsWithChildren<AnimatePresenceProps>>;
//# sourceMappingURL=AnimatePresence.d.ts.map

@@ -5,9 +5,10 @@ /// <reference types="react" />

id: string;
isPresent: boolean;
isEntering: boolean | undefined;
register: (id: string) => () => void;
onExitComplete?: (id: string) => void;
initial?: false | VariantLabels;
custom?: any;
exitVariant?: string | null;
enterVariant?: string | null;
}
export declare const AnimatePresenceContext: import("react").Context<AnimatePresenceContextProps | null>;
//# sourceMappingURL=AnimatePresenceContext.d.ts.map
export * from './AnimatePresence';
export * from './usePresence';
export * from './useEntering';
export { AnimatePresenceContext } from './AnimatePresenceContext';
//# sourceMappingURL=index.d.ts.map

@@ -5,10 +5,11 @@ import * as React from 'react';

children: React.ReactElement<any>;
isPresent: boolean;
isEntering: boolean | undefined;
onExitComplete?: () => void;
initial?: false | VariantLabels;
custom?: any;
exitVariant?: string | null;
enterVariant?: string | null;
presenceAffectsLayout: boolean;
}
export declare const PresenceChild: ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, }: PresenceChildProps) => JSX.Element;
export declare const PresenceChild: ({ children, initial, isEntering, onExitComplete, exitVariant, enterVariant, presenceAffectsLayout, }: PresenceChildProps) => JSX.Element;
export {};
//# sourceMappingURL=PresenceChild.d.ts.map
import { AnimatePresenceContextProps } from './AnimatePresenceContext';
export declare type SafeToRemove = () => void;
declare type AlwaysPresent = [true, null];
declare type Present = [true];
declare type NotPresent = [false, SafeToRemove];
export declare function usePresence(): AlwaysPresent | Present | NotPresent;
export declare function useIsPresent(): boolean;
export declare function isPresent(context: AnimatePresenceContextProps | null): boolean;
declare type AlreadyPresent = [undefined];
declare type Entering = [true];
declare type Leaving = [false, SafeToRemove];
export declare function useEntering(): Entering | Leaving | AlreadyPresent;
export declare function useIsEntering(): boolean | undefined;
export declare function isEntering(context: AnimatePresenceContextProps | null): boolean | undefined;
export {};
//# sourceMappingURL=usePresence.d.ts.map

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc