@tamagui/animate-presence 1.43.17 → 1.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -4
- package/dist/jsx/AnimatePresence.js +0 -165
- package/dist/jsx/AnimatePresence.js.map +0 -6
- package/dist/jsx/AnimatePresence.mjs +0 -165
- package/dist/jsx/AnimatePresence.mjs.map +0 -6
- package/dist/jsx/LayoutGroupContext.js +0 -6
- package/dist/jsx/LayoutGroupContext.js.map +0 -6
- package/dist/jsx/LayoutGroupContext.mjs +0 -6
- package/dist/jsx/LayoutGroupContext.mjs.map +0 -6
- package/dist/jsx/PresenceChild.js +0 -60
- package/dist/jsx/PresenceChild.js.map +0 -6
- package/dist/jsx/PresenceChild.mjs +0 -60
- package/dist/jsx/PresenceChild.mjs.map +0 -6
- package/dist/jsx/index.js +0 -4
- package/dist/jsx/index.js.map +0 -6
- package/dist/jsx/index.mjs +0 -4
- package/dist/jsx/index.mjs.map +0 -6
- package/dist/jsx/types.js +0 -1
- package/dist/jsx/types.js.map +0 -6
- package/dist/jsx/types.mjs +0 -1
- package/dist/jsx/types.mjs.map +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/animate-presence",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.45.0",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "MIT",
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
"dist"
|
|
14
14
|
],
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@tamagui/use-presence": "1.
|
|
17
|
-
"@tamagui/web": "1.
|
|
16
|
+
"@tamagui/use-presence": "1.45.0",
|
|
17
|
+
"@tamagui/web": "1.45.0"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@tamagui/build": "1.
|
|
20
|
+
"@tamagui/build": "1.45.0"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build": "tamagui-build",
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { useDidFinishSSR, useForceUpdate, useIsomorphicLayoutEffect } from "@tamagui/web";
|
|
2
|
-
import React, {
|
|
3
|
-
Children,
|
|
4
|
-
cloneElement,
|
|
5
|
-
isValidElement,
|
|
6
|
-
useContext,
|
|
7
|
-
useEffect,
|
|
8
|
-
useRef
|
|
9
|
-
} from "react";
|
|
10
|
-
import { LayoutGroupContext } from "./LayoutGroupContext";
|
|
11
|
-
import { PresenceChild } from "./PresenceChild";
|
|
12
|
-
const getChildKey = (child) => child.key || "";
|
|
13
|
-
const isDev = process.env.NODE_ENV !== "production";
|
|
14
|
-
function updateChildLookup(children, allChildren) {
|
|
15
|
-
const seenChildren = isDev ? /* @__PURE__ */ new Set() : null;
|
|
16
|
-
children.forEach((child) => {
|
|
17
|
-
const key = getChildKey(child);
|
|
18
|
-
if (isDev && seenChildren && seenChildren.has(key)) {
|
|
19
|
-
console.warn(
|
|
20
|
-
`Children of AnimatePresence require unique keys. "${key}" is a duplicate.`
|
|
21
|
-
);
|
|
22
|
-
seenChildren.add(key);
|
|
23
|
-
}
|
|
24
|
-
allChildren.set(key, child);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
function onlyElements(children) {
|
|
28
|
-
const filtered = [];
|
|
29
|
-
Children.forEach(children, (child, index) => {
|
|
30
|
-
if (isValidElement(child)) {
|
|
31
|
-
if (!child.key && Children.count(children) > 1) {
|
|
32
|
-
if (process.env.NODE_ENV === "development") {
|
|
33
|
-
console.warn("No key given to AnimatePresence child, assigning index as key");
|
|
34
|
-
}
|
|
35
|
-
filtered.push(
|
|
36
|
-
React.cloneElement(child, {
|
|
37
|
-
key: index
|
|
38
|
-
})
|
|
39
|
-
);
|
|
40
|
-
} else {
|
|
41
|
-
filtered.push(child);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
return filtered;
|
|
46
|
-
}
|
|
47
|
-
const AnimatePresence = ({
|
|
48
|
-
children,
|
|
49
|
-
enterVariant,
|
|
50
|
-
exitVariant,
|
|
51
|
-
initial = true,
|
|
52
|
-
onExitComplete,
|
|
53
|
-
exitBeforeEnter,
|
|
54
|
-
presenceAffectsLayout = true
|
|
55
|
-
}) => {
|
|
56
|
-
let forceRender = useForceUpdate();
|
|
57
|
-
const isClientMounted = useDidFinishSSR();
|
|
58
|
-
const forceRenderLayoutGroup = useContext(LayoutGroupContext).forceRender;
|
|
59
|
-
if (forceRenderLayoutGroup)
|
|
60
|
-
forceRender = forceRenderLayoutGroup;
|
|
61
|
-
const isMounted = useRef(false);
|
|
62
|
-
const filteredChildren = onlyElements(children);
|
|
63
|
-
let childrenToRender = filteredChildren;
|
|
64
|
-
const exiting = /* @__PURE__ */ new Set();
|
|
65
|
-
const presentChildren = useRef(childrenToRender);
|
|
66
|
-
const allChildren = useRef(/* @__PURE__ */ new Map()).current;
|
|
67
|
-
const isInitialRender = useRef(true);
|
|
68
|
-
useEffect(() => {
|
|
69
|
-
isMounted.current = true;
|
|
70
|
-
return () => {
|
|
71
|
-
isMounted.current = false;
|
|
72
|
-
isInitialRender.current = true;
|
|
73
|
-
allChildren.clear();
|
|
74
|
-
exiting.clear();
|
|
75
|
-
};
|
|
76
|
-
}, []);
|
|
77
|
-
useIsomorphicLayoutEffect(() => {
|
|
78
|
-
isInitialRender.current = false;
|
|
79
|
-
updateChildLookup(filteredChildren, allChildren);
|
|
80
|
-
presentChildren.current = childrenToRender;
|
|
81
|
-
});
|
|
82
|
-
const hasWarned = process.env.NODE_ENV === "development" ? useRef(false) : null;
|
|
83
|
-
if (isInitialRender.current) {
|
|
84
|
-
return <>{childrenToRender.map((child) => <PresenceChild
|
|
85
|
-
key={getChildKey(child)}
|
|
86
|
-
isPresent={Boolean(isClientMounted ? true : isMounted.current)}
|
|
87
|
-
exitVariant={exitVariant}
|
|
88
|
-
enterVariant={enterVariant}
|
|
89
|
-
initial={initial ? void 0 : false}
|
|
90
|
-
presenceAffectsLayout={presenceAffectsLayout}
|
|
91
|
-
>{child}</PresenceChild>)}</>;
|
|
92
|
-
}
|
|
93
|
-
childrenToRender = [...childrenToRender];
|
|
94
|
-
const presentKeys = presentChildren.current.map(getChildKey);
|
|
95
|
-
const targetKeys = filteredChildren.map(getChildKey);
|
|
96
|
-
const numPresent = presentKeys.length;
|
|
97
|
-
for (let i = 0; i < numPresent; i++) {
|
|
98
|
-
const key = presentKeys[i];
|
|
99
|
-
if (targetKeys.indexOf(key) === -1) {
|
|
100
|
-
exiting.add(key);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
if (exitBeforeEnter && exiting.size) {
|
|
104
|
-
childrenToRender = [];
|
|
105
|
-
}
|
|
106
|
-
exiting.forEach((key) => {
|
|
107
|
-
if (targetKeys.indexOf(key) !== -1)
|
|
108
|
-
return;
|
|
109
|
-
const child = allChildren.get(key);
|
|
110
|
-
if (!child)
|
|
111
|
-
return;
|
|
112
|
-
const insertionIndex = presentKeys.indexOf(key);
|
|
113
|
-
childrenToRender.splice(
|
|
114
|
-
insertionIndex,
|
|
115
|
-
0,
|
|
116
|
-
<PresenceChild
|
|
117
|
-
key={getChildKey(child)}
|
|
118
|
-
isPresent={false}
|
|
119
|
-
onExitComplete={() => {
|
|
120
|
-
allChildren.delete(key);
|
|
121
|
-
exiting.delete(key);
|
|
122
|
-
const removeIndex = presentChildren.current.findIndex(
|
|
123
|
-
(presentChild) => presentChild.key === key
|
|
124
|
-
);
|
|
125
|
-
presentChildren.current.splice(removeIndex, 1);
|
|
126
|
-
if (!exiting.size) {
|
|
127
|
-
presentChildren.current = filteredChildren;
|
|
128
|
-
if (isMounted.current === false)
|
|
129
|
-
return;
|
|
130
|
-
forceRender();
|
|
131
|
-
onExitComplete?.();
|
|
132
|
-
}
|
|
133
|
-
}}
|
|
134
|
-
exitVariant={exitVariant}
|
|
135
|
-
enterVariant={enterVariant}
|
|
136
|
-
presenceAffectsLayout={presenceAffectsLayout}
|
|
137
|
-
>{child}</PresenceChild>
|
|
138
|
-
);
|
|
139
|
-
});
|
|
140
|
-
childrenToRender = childrenToRender.map((child) => {
|
|
141
|
-
const key = child.key;
|
|
142
|
-
return exiting.has(key) ? child : <PresenceChild
|
|
143
|
-
key={getChildKey(child)}
|
|
144
|
-
isPresent
|
|
145
|
-
exitVariant={exitVariant}
|
|
146
|
-
enterVariant={enterVariant}
|
|
147
|
-
presenceAffectsLayout={presenceAffectsLayout}
|
|
148
|
-
>{child}</PresenceChild>;
|
|
149
|
-
});
|
|
150
|
-
if (process.env.NODE_ENV === "development") {
|
|
151
|
-
const shouldWarn = exitBeforeEnter && childrenToRender.length > 1;
|
|
152
|
-
if (shouldWarn && hasWarned && !hasWarned.current) {
|
|
153
|
-
hasWarned.current = true;
|
|
154
|
-
console.log(
|
|
155
|
-
`You're attempting to animate multiple children within AnimatePresence, but its exitBeforeEnter prop is set to true. This can lead to odd visual behaviour.`
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return <>{exiting.size ? childrenToRender : childrenToRender.map((child) => cloneElement(child))}</>;
|
|
160
|
-
};
|
|
161
|
-
AnimatePresence.displayName = "AnimatePresence";
|
|
162
|
-
export {
|
|
163
|
-
AnimatePresence
|
|
164
|
-
};
|
|
165
|
-
//# sourceMappingURL=AnimatePresence.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/AnimatePresence.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { useDidFinishSSR, useForceUpdate, useIsomorphicLayoutEffect } from "@tamagui/web";
|
|
2
|
-
import React, {
|
|
3
|
-
Children,
|
|
4
|
-
cloneElement,
|
|
5
|
-
isValidElement,
|
|
6
|
-
useContext,
|
|
7
|
-
useEffect,
|
|
8
|
-
useRef
|
|
9
|
-
} from "react";
|
|
10
|
-
import { LayoutGroupContext } from "./LayoutGroupContext";
|
|
11
|
-
import { PresenceChild } from "./PresenceChild";
|
|
12
|
-
const getChildKey = (child) => child.key || "";
|
|
13
|
-
const isDev = process.env.NODE_ENV !== "production";
|
|
14
|
-
function updateChildLookup(children, allChildren) {
|
|
15
|
-
const seenChildren = isDev ? /* @__PURE__ */ new Set() : null;
|
|
16
|
-
children.forEach((child) => {
|
|
17
|
-
const key = getChildKey(child);
|
|
18
|
-
if (isDev && seenChildren && seenChildren.has(key)) {
|
|
19
|
-
console.warn(
|
|
20
|
-
`Children of AnimatePresence require unique keys. "${key}" is a duplicate.`
|
|
21
|
-
);
|
|
22
|
-
seenChildren.add(key);
|
|
23
|
-
}
|
|
24
|
-
allChildren.set(key, child);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
function onlyElements(children) {
|
|
28
|
-
const filtered = [];
|
|
29
|
-
Children.forEach(children, (child, index) => {
|
|
30
|
-
if (isValidElement(child)) {
|
|
31
|
-
if (!child.key && Children.count(children) > 1) {
|
|
32
|
-
if (process.env.NODE_ENV === "development") {
|
|
33
|
-
console.warn("No key given to AnimatePresence child, assigning index as key");
|
|
34
|
-
}
|
|
35
|
-
filtered.push(
|
|
36
|
-
React.cloneElement(child, {
|
|
37
|
-
key: index
|
|
38
|
-
})
|
|
39
|
-
);
|
|
40
|
-
} else {
|
|
41
|
-
filtered.push(child);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
return filtered;
|
|
46
|
-
}
|
|
47
|
-
const AnimatePresence = ({
|
|
48
|
-
children,
|
|
49
|
-
enterVariant,
|
|
50
|
-
exitVariant,
|
|
51
|
-
initial = true,
|
|
52
|
-
onExitComplete,
|
|
53
|
-
exitBeforeEnter,
|
|
54
|
-
presenceAffectsLayout = true
|
|
55
|
-
}) => {
|
|
56
|
-
let forceRender = useForceUpdate();
|
|
57
|
-
const isClientMounted = useDidFinishSSR();
|
|
58
|
-
const forceRenderLayoutGroup = useContext(LayoutGroupContext).forceRender;
|
|
59
|
-
if (forceRenderLayoutGroup)
|
|
60
|
-
forceRender = forceRenderLayoutGroup;
|
|
61
|
-
const isMounted = useRef(false);
|
|
62
|
-
const filteredChildren = onlyElements(children);
|
|
63
|
-
let childrenToRender = filteredChildren;
|
|
64
|
-
const exiting = /* @__PURE__ */ new Set();
|
|
65
|
-
const presentChildren = useRef(childrenToRender);
|
|
66
|
-
const allChildren = useRef(/* @__PURE__ */ new Map()).current;
|
|
67
|
-
const isInitialRender = useRef(true);
|
|
68
|
-
useEffect(() => {
|
|
69
|
-
isMounted.current = true;
|
|
70
|
-
return () => {
|
|
71
|
-
isMounted.current = false;
|
|
72
|
-
isInitialRender.current = true;
|
|
73
|
-
allChildren.clear();
|
|
74
|
-
exiting.clear();
|
|
75
|
-
};
|
|
76
|
-
}, []);
|
|
77
|
-
useIsomorphicLayoutEffect(() => {
|
|
78
|
-
isInitialRender.current = false;
|
|
79
|
-
updateChildLookup(filteredChildren, allChildren);
|
|
80
|
-
presentChildren.current = childrenToRender;
|
|
81
|
-
});
|
|
82
|
-
const hasWarned = process.env.NODE_ENV === "development" ? useRef(false) : null;
|
|
83
|
-
if (isInitialRender.current) {
|
|
84
|
-
return <>{childrenToRender.map((child) => <PresenceChild
|
|
85
|
-
key={getChildKey(child)}
|
|
86
|
-
isPresent={Boolean(isClientMounted ? true : isMounted.current)}
|
|
87
|
-
exitVariant={exitVariant}
|
|
88
|
-
enterVariant={enterVariant}
|
|
89
|
-
initial={initial ? void 0 : false}
|
|
90
|
-
presenceAffectsLayout={presenceAffectsLayout}
|
|
91
|
-
>{child}</PresenceChild>)}</>;
|
|
92
|
-
}
|
|
93
|
-
childrenToRender = [...childrenToRender];
|
|
94
|
-
const presentKeys = presentChildren.current.map(getChildKey);
|
|
95
|
-
const targetKeys = filteredChildren.map(getChildKey);
|
|
96
|
-
const numPresent = presentKeys.length;
|
|
97
|
-
for (let i = 0; i < numPresent; i++) {
|
|
98
|
-
const key = presentKeys[i];
|
|
99
|
-
if (targetKeys.indexOf(key) === -1) {
|
|
100
|
-
exiting.add(key);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
if (exitBeforeEnter && exiting.size) {
|
|
104
|
-
childrenToRender = [];
|
|
105
|
-
}
|
|
106
|
-
exiting.forEach((key) => {
|
|
107
|
-
if (targetKeys.indexOf(key) !== -1)
|
|
108
|
-
return;
|
|
109
|
-
const child = allChildren.get(key);
|
|
110
|
-
if (!child)
|
|
111
|
-
return;
|
|
112
|
-
const insertionIndex = presentKeys.indexOf(key);
|
|
113
|
-
childrenToRender.splice(
|
|
114
|
-
insertionIndex,
|
|
115
|
-
0,
|
|
116
|
-
<PresenceChild
|
|
117
|
-
key={getChildKey(child)}
|
|
118
|
-
isPresent={false}
|
|
119
|
-
onExitComplete={() => {
|
|
120
|
-
allChildren.delete(key);
|
|
121
|
-
exiting.delete(key);
|
|
122
|
-
const removeIndex = presentChildren.current.findIndex(
|
|
123
|
-
(presentChild) => presentChild.key === key
|
|
124
|
-
);
|
|
125
|
-
presentChildren.current.splice(removeIndex, 1);
|
|
126
|
-
if (!exiting.size) {
|
|
127
|
-
presentChildren.current = filteredChildren;
|
|
128
|
-
if (isMounted.current === false)
|
|
129
|
-
return;
|
|
130
|
-
forceRender();
|
|
131
|
-
onExitComplete?.();
|
|
132
|
-
}
|
|
133
|
-
}}
|
|
134
|
-
exitVariant={exitVariant}
|
|
135
|
-
enterVariant={enterVariant}
|
|
136
|
-
presenceAffectsLayout={presenceAffectsLayout}
|
|
137
|
-
>{child}</PresenceChild>
|
|
138
|
-
);
|
|
139
|
-
});
|
|
140
|
-
childrenToRender = childrenToRender.map((child) => {
|
|
141
|
-
const key = child.key;
|
|
142
|
-
return exiting.has(key) ? child : <PresenceChild
|
|
143
|
-
key={getChildKey(child)}
|
|
144
|
-
isPresent
|
|
145
|
-
exitVariant={exitVariant}
|
|
146
|
-
enterVariant={enterVariant}
|
|
147
|
-
presenceAffectsLayout={presenceAffectsLayout}
|
|
148
|
-
>{child}</PresenceChild>;
|
|
149
|
-
});
|
|
150
|
-
if (process.env.NODE_ENV === "development") {
|
|
151
|
-
const shouldWarn = exitBeforeEnter && childrenToRender.length > 1;
|
|
152
|
-
if (shouldWarn && hasWarned && !hasWarned.current) {
|
|
153
|
-
hasWarned.current = true;
|
|
154
|
-
console.log(
|
|
155
|
-
`You're attempting to animate multiple children within AnimatePresence, but its exitBeforeEnter prop is set to true. This can lead to odd visual behaviour.`
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return <>{exiting.size ? childrenToRender : childrenToRender.map((child) => cloneElement(child))}</>;
|
|
160
|
-
};
|
|
161
|
-
AnimatePresence.displayName = "AnimatePresence";
|
|
162
|
-
export {
|
|
163
|
-
AnimatePresence
|
|
164
|
-
};
|
|
165
|
-
//# sourceMappingURL=AnimatePresence.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/AnimatePresence.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { PresenceContext } from "@tamagui/use-presence";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import { useId } from "react";
|
|
4
|
-
const PresenceChild = ({
|
|
5
|
-
children,
|
|
6
|
-
initial,
|
|
7
|
-
isPresent,
|
|
8
|
-
onExitComplete,
|
|
9
|
-
exitVariant,
|
|
10
|
-
enterVariant,
|
|
11
|
-
presenceAffectsLayout
|
|
12
|
-
}) => {
|
|
13
|
-
const presenceChildren = React.useMemo(newChildrenMap, []);
|
|
14
|
-
const id = useId() || "";
|
|
15
|
-
const context = React.useMemo(
|
|
16
|
-
() => {
|
|
17
|
-
return {
|
|
18
|
-
id,
|
|
19
|
-
initial,
|
|
20
|
-
isPresent,
|
|
21
|
-
exitVariant,
|
|
22
|
-
enterVariant,
|
|
23
|
-
onExitComplete: (id2) => {
|
|
24
|
-
presenceChildren.set(id2, true);
|
|
25
|
-
for (const isComplete of presenceChildren.values()) {
|
|
26
|
-
if (!isComplete) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
onExitComplete?.();
|
|
31
|
-
},
|
|
32
|
-
register: (id2) => {
|
|
33
|
-
presenceChildren.set(id2, false);
|
|
34
|
-
return () => presenceChildren.delete(id2);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
},
|
|
38
|
-
/**
|
|
39
|
-
* If the presence of a child affects the layout of the components around it,
|
|
40
|
-
* we want to make a new context value to ensure they get re-rendered
|
|
41
|
-
* so they can detect that layout change.
|
|
42
|
-
*/
|
|
43
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
-
presenceAffectsLayout ? void 0 : [isPresent, exitVariant, enterVariant]
|
|
45
|
-
);
|
|
46
|
-
React.useMemo(() => {
|
|
47
|
-
presenceChildren.forEach((_, key) => presenceChildren.set(key, false));
|
|
48
|
-
}, [isPresent]);
|
|
49
|
-
React.useEffect(() => {
|
|
50
|
-
!(isPresent || presenceChildren.size) && onExitComplete?.();
|
|
51
|
-
}, [isPresent]);
|
|
52
|
-
return <PresenceContext.Provider value={context}>{children}</PresenceContext.Provider>;
|
|
53
|
-
};
|
|
54
|
-
function newChildrenMap() {
|
|
55
|
-
return /* @__PURE__ */ new Map();
|
|
56
|
-
}
|
|
57
|
-
export {
|
|
58
|
-
PresenceChild
|
|
59
|
-
};
|
|
60
|
-
//# sourceMappingURL=PresenceChild.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/PresenceChild.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,uBAAuB;AAEhC,YAAY,WAAW;AACvB,SAAS,aAAa;AAef,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AACxB,QAAM,mBAAmB,MAAM,QAAQ,gBAAgB,CAAC,CAAC;AACzD,QAAM,KAAK,MAAM,KAAK;AAEtB,QAAM,UAAU,MAAM;AAAA,IACpB,MAA4B;AAC1B,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAgB,CAACA,QAAe;AAC9B,2BAAiB,IAAIA,KAAI,IAAI;AAC7B,qBAAW,cAAc,iBAAiB,OAAO,GAAG;AAClD,gBAAI,CAAC,YAAY;AACf;AAAA,YACF;AAAA,UACF;AACA,2BAAiB;AAAA,QACnB;AAAA,QACA,UAAU,CAACA,QAAe;AACxB,2BAAiB,IAAIA,KAAI,KAAK;AAC9B,iBAAO,MAAM,iBAAiB,OAAOA,GAAE;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,wBAAwB,SAAY,CAAC,WAAW,aAAa,YAAY;AAAA,EAC3E;AAEA,QAAM,QAAQ,MAAM;AAClB,qBAAiB,QAAQ,CAAC,GAAG,QAAQ,iBAAiB,IAAI,KAAK,KAAK,CAAC;AAAA,EAEvE,GAAG,CAAC,SAAS,CAAC;AAMd,QAAM,UAAU,MAAM;AACpB,MAAE,aAAa,iBAAiB,SAAS,iBAAiB;AAAA,EAE5D,GAAG,CAAC,SAAS,CAAC;AAEd,SAAO,CAAC,gBAAgB,SAAS,OAAO,UAAU,SAAS,EAAnD,gBAAgB;AAC1B;AAEA,SAAS,iBAAuC;AAC9C,SAAO,oBAAI,IAAI;AACjB;",
|
|
5
|
-
"names": ["id"]
|
|
6
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { PresenceContext } from "@tamagui/use-presence";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import { useId } from "react";
|
|
4
|
-
const PresenceChild = ({
|
|
5
|
-
children,
|
|
6
|
-
initial,
|
|
7
|
-
isPresent,
|
|
8
|
-
onExitComplete,
|
|
9
|
-
exitVariant,
|
|
10
|
-
enterVariant,
|
|
11
|
-
presenceAffectsLayout
|
|
12
|
-
}) => {
|
|
13
|
-
const presenceChildren = React.useMemo(newChildrenMap, []);
|
|
14
|
-
const id = useId() || "";
|
|
15
|
-
const context = React.useMemo(
|
|
16
|
-
() => {
|
|
17
|
-
return {
|
|
18
|
-
id,
|
|
19
|
-
initial,
|
|
20
|
-
isPresent,
|
|
21
|
-
exitVariant,
|
|
22
|
-
enterVariant,
|
|
23
|
-
onExitComplete: (id2) => {
|
|
24
|
-
presenceChildren.set(id2, true);
|
|
25
|
-
for (const isComplete of presenceChildren.values()) {
|
|
26
|
-
if (!isComplete) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
onExitComplete?.();
|
|
31
|
-
},
|
|
32
|
-
register: (id2) => {
|
|
33
|
-
presenceChildren.set(id2, false);
|
|
34
|
-
return () => presenceChildren.delete(id2);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
},
|
|
38
|
-
/**
|
|
39
|
-
* If the presence of a child affects the layout of the components around it,
|
|
40
|
-
* we want to make a new context value to ensure they get re-rendered
|
|
41
|
-
* so they can detect that layout change.
|
|
42
|
-
*/
|
|
43
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
-
presenceAffectsLayout ? void 0 : [isPresent, exitVariant, enterVariant]
|
|
45
|
-
);
|
|
46
|
-
React.useMemo(() => {
|
|
47
|
-
presenceChildren.forEach((_, key) => presenceChildren.set(key, false));
|
|
48
|
-
}, [isPresent]);
|
|
49
|
-
React.useEffect(() => {
|
|
50
|
-
!(isPresent || presenceChildren.size) && onExitComplete?.();
|
|
51
|
-
}, [isPresent]);
|
|
52
|
-
return <PresenceContext.Provider value={context}>{children}</PresenceContext.Provider>;
|
|
53
|
-
};
|
|
54
|
-
function newChildrenMap() {
|
|
55
|
-
return /* @__PURE__ */ new Map();
|
|
56
|
-
}
|
|
57
|
-
export {
|
|
58
|
-
PresenceChild
|
|
59
|
-
};
|
|
60
|
-
//# sourceMappingURL=PresenceChild.mjs.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/PresenceChild.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,uBAAuB;AAEhC,YAAY,WAAW;AACvB,SAAS,aAAa;AAef,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA0B;AACxB,QAAM,mBAAmB,MAAM,QAAQ,gBAAgB,CAAC,CAAC;AACzD,QAAM,KAAK,MAAM,KAAK;AAEtB,QAAM,UAAU,MAAM;AAAA,IACpB,MAA4B;AAC1B,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAgB,CAACA,QAAe;AAC9B,2BAAiB,IAAIA,KAAI,IAAI;AAC7B,qBAAW,cAAc,iBAAiB,OAAO,GAAG;AAClD,gBAAI,CAAC,YAAY;AACf;AAAA,YACF;AAAA,UACF;AACA,2BAAiB;AAAA,QACnB;AAAA,QACA,UAAU,CAACA,QAAe;AACxB,2BAAiB,IAAIA,KAAI,KAAK;AAC9B,iBAAO,MAAM,iBAAiB,OAAOA,GAAE;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA,wBAAwB,SAAY,CAAC,WAAW,aAAa,YAAY;AAAA,EAC3E;AAEA,QAAM,QAAQ,MAAM;AAClB,qBAAiB,QAAQ,CAAC,GAAG,QAAQ,iBAAiB,IAAI,KAAK,KAAK,CAAC;AAAA,EAEvE,GAAG,CAAC,SAAS,CAAC;AAMd,QAAM,UAAU,MAAM;AACpB,MAAE,aAAa,iBAAiB,SAAS,iBAAiB;AAAA,EAE5D,GAAG,CAAC,SAAS,CAAC;AAEd,SAAO,CAAC,gBAAgB,SAAS,OAAO,UAAU,SAAS,EAAnD,gBAAgB;AAC1B;AAEA,SAAS,iBAAuC;AAC9C,SAAO,oBAAI,IAAI;AACjB;",
|
|
5
|
-
"names": ["id"]
|
|
6
|
-
}
|
package/dist/jsx/index.js
DELETED
package/dist/jsx/index.js.map
DELETED
package/dist/jsx/index.mjs
DELETED
package/dist/jsx/index.mjs.map
DELETED
package/dist/jsx/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=types.js.map
|
package/dist/jsx/types.js.map
DELETED
package/dist/jsx/types.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=types.mjs.map
|