@tamagui/portal 2.7.7 → 3.0.0-beta.643.1
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/dist/cjs/GorhomPortal.cjs +132 -164
- package/dist/cjs/GorhomPortal.native.cjs +202 -0
- package/dist/cjs/GorhomPortal.native.js +166 -211
- package/dist/cjs/GorhomPortal.native.js.map +1 -1
- package/dist/cjs/GorhomPortalItem.cjs +58 -58
- package/dist/cjs/GorhomPortalItem.native.cjs +105 -0
- package/dist/cjs/GorhomPortalItem.native.js +85 -106
- package/dist/cjs/GorhomPortalItem.native.js.map +1 -1
- package/dist/cjs/Portal.cjs +52 -60
- package/dist/cjs/Portal.native.cjs +57 -0
- package/dist/cjs/Portal.native.js +39 -44
- package/dist/cjs/Portal.native.js.map +1 -1
- package/dist/cjs/PortalProps.cjs +10 -11
- package/dist/cjs/PortalProps.native.cjs +19 -0
- package/dist/cjs/PortalProps.native.js +10 -10
- package/dist/cjs/PortalProps.native.js.map +1 -1
- package/dist/cjs/constants.cjs +24 -25
- package/dist/cjs/constants.native.cjs +44 -0
- package/dist/cjs/constants.native.js +26 -26
- package/dist/cjs/constants.native.js.map +1 -1
- package/dist/cjs/helpers.cjs +23 -24
- package/dist/cjs/helpers.native.cjs +39 -0
- package/dist/cjs/helpers.native.js +23 -23
- package/dist/cjs/helpers.native.js.map +1 -1
- package/dist/cjs/index.cjs +16 -17
- package/dist/cjs/index.native.cjs +36 -0
- package/dist/cjs/index.native.js +16 -16
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/native-portal.cjs +32 -35
- package/dist/cjs/native-portal.native.cjs +51 -0
- package/dist/cjs/native-portal.native.js +37 -39
- package/dist/cjs/native-portal.native.js.map +1 -1
- package/dist/cjs/types.cjs +10 -11
- package/dist/cjs/types.native.cjs +19 -0
- package/dist/cjs/types.native.js +10 -10
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/esm/GorhomPortal.mjs +112 -136
- package/dist/esm/GorhomPortal.mjs.map +1 -1
- package/dist/esm/GorhomPortal.native.js +146 -184
- package/dist/esm/GorhomPortal.native.js.map +1 -1
- package/dist/esm/GorhomPortalItem.mjs +46 -41
- package/dist/esm/GorhomPortalItem.mjs.map +1 -1
- package/dist/esm/GorhomPortalItem.native.js +74 -91
- package/dist/esm/GorhomPortalItem.native.js.map +1 -1
- package/dist/esm/Portal.mjs +38 -36
- package/dist/esm/Portal.mjs.map +1 -1
- package/dist/esm/Portal.native.js +28 -29
- package/dist/esm/Portal.native.js.map +1 -1
- package/dist/esm/PortalProps.mjs +0 -2
- package/dist/esm/PortalProps.native.js +0 -2
- package/dist/esm/constants.mjs +8 -6
- package/dist/esm/constants.mjs.map +1 -1
- package/dist/esm/constants.native.js +10 -8
- package/dist/esm/constants.native.js.map +1 -1
- package/dist/esm/helpers.mjs +9 -7
- package/dist/esm/helpers.mjs.map +1 -1
- package/dist/esm/helpers.native.js +9 -7
- package/dist/esm/helpers.native.js.map +1 -1
- package/dist/esm/index.js +10 -6
- package/dist/esm/index.mjs +10 -6
- package/dist/esm/index.native.js +10 -6
- package/dist/esm/native-portal.mjs +23 -17
- package/dist/esm/native-portal.mjs.map +1 -1
- package/dist/esm/native-portal.native.js +28 -22
- package/dist/esm/native-portal.native.js.map +1 -1
- package/dist/esm/types.mjs +0 -2
- package/dist/esm/types.native.js +0 -2
- package/package.json +11 -10
- package/src/GorhomPortalItem.tsx +11 -2
- package/src/Portal.tsx +31 -7
- package/src/PortalProps.tsx +7 -0
- package/types/GorhomPortal.d.ts +3 -2
- package/types/GorhomPortal.d.ts.map +1 -1
- package/types/GorhomPortalItem.d.ts.map +1 -1
- package/types/GorhomPortalItem.native.d.ts +1 -1
- package/types/GorhomPortalItem.native.d.ts.map +1 -1
- package/types/Portal.d.ts.map +1 -1
- package/types/Portal.native.d.ts +1 -1
- package/types/Portal.native.d.ts.map +1 -1
- package/types/PortalProps.d.ts +7 -1
- package/types/PortalProps.d.ts.map +1 -1
- package/types/helpers.d.ts +1 -1
- package/types/helpers.d.ts.map +1 -1
- package/dist/esm/PortalProps.mjs.map +0 -1
- package/dist/esm/PortalProps.native.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/types.mjs.map +0 -1
- package/dist/esm/types.native.js.map +0 -1
|
@@ -3,203 +3,165 @@ import { useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
|
3
3
|
import { NativePortalHost, NativePortalProvider, getPortal } from "@tamagui/native";
|
|
4
4
|
import { startTransition } from "@tamagui/start-transition";
|
|
5
5
|
import React, { createContext, memo, useCallback, useContext, useMemo, useReducer } from "react";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
|
|
7
|
+
var ACTIONS = /* @__PURE__ */ (function(ACTIONS2) {
|
|
8
|
+
ACTIONS2[ACTIONS2["REGISTER_HOST"] = 0] = "REGISTER_HOST";
|
|
9
|
+
ACTIONS2[ACTIONS2["DEREGISTER_HOST"] = 1] = "DEREGISTER_HOST";
|
|
10
|
+
ACTIONS2[ACTIONS2["ADD_UPDATE_PORTAL"] = 2] = "ADD_UPDATE_PORTAL";
|
|
11
|
+
ACTIONS2[ACTIONS2["REMOVE_PORTAL"] = 3] = "REMOVE_PORTAL";
|
|
12
|
+
return ACTIONS2;
|
|
13
|
+
})(ACTIONS || {});
|
|
13
14
|
var INITIAL_STATE = {};
|
|
14
|
-
var registerHost = function
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
var registerHost = function(state, hostName) {
|
|
16
|
+
if (!(hostName in state)) state[hostName] = [];
|
|
17
|
+
return state;
|
|
17
18
|
};
|
|
18
|
-
var deregisterHost = function
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
var deregisterHost = function(state, hostName) {
|
|
20
|
+
delete state[hostName];
|
|
21
|
+
return state;
|
|
21
22
|
};
|
|
22
|
-
var addUpdatePortal = function
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
var addUpdatePortal = function(state, hostName, portalName, node) {
|
|
24
|
+
if (!(hostName in state)) state = registerHost(state, hostName);
|
|
25
|
+
var index = state[hostName].findIndex(function(item) {
|
|
26
|
+
return item.name === portalName;
|
|
27
|
+
});
|
|
28
|
+
if (index !== -1) state[hostName][index].node = node;
|
|
29
|
+
else state[hostName].push({
|
|
30
|
+
name: portalName,
|
|
31
|
+
node
|
|
32
|
+
});
|
|
33
|
+
return state;
|
|
32
34
|
};
|
|
33
|
-
var removePortal = function
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
var removePortal = function(state, hostName, portalName) {
|
|
36
|
+
if (!(hostName in state)) {
|
|
37
|
+
if (process.env.NODE_ENV === "development") console.info(`Failed to remove portal '${portalName}', '${hostName}' was not registered!`);
|
|
38
|
+
return state;
|
|
39
|
+
}
|
|
40
|
+
var index = state[hostName].findIndex(function(item) {
|
|
41
|
+
return item.name === portalName;
|
|
42
|
+
});
|
|
43
|
+
if (index !== -1) state[hostName].splice(index, 1);
|
|
44
|
+
return state;
|
|
43
45
|
};
|
|
44
|
-
var reducer = function
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
case 1:
|
|
54
|
-
return deregisterHost({
|
|
55
|
-
...state
|
|
56
|
-
}, action.hostName);
|
|
57
|
-
case 2:
|
|
58
|
-
return addUpdatePortal({
|
|
59
|
-
...state
|
|
60
|
-
}, action.hostName, action.portalName, action.node);
|
|
61
|
-
case 3:
|
|
62
|
-
return removePortal({
|
|
63
|
-
...state
|
|
64
|
-
}, action.hostName, action.portalName);
|
|
65
|
-
default:
|
|
66
|
-
return state;
|
|
67
|
-
}
|
|
46
|
+
var reducer = function(state, action) {
|
|
47
|
+
var { type } = action;
|
|
48
|
+
switch (type) {
|
|
49
|
+
case 0: return registerHost({ ...state }, action.hostName);
|
|
50
|
+
case 1: return deregisterHost({ ...state }, action.hostName);
|
|
51
|
+
case 2: return addUpdatePortal({ ...state }, action.hostName, action.portalName, action.node);
|
|
52
|
+
case 3: return removePortal({ ...state }, action.hostName, action.portalName);
|
|
53
|
+
default: return state;
|
|
54
|
+
}
|
|
68
55
|
};
|
|
69
|
-
var PortalStateContext = /* @__PURE__ */createContext(null);
|
|
70
|
-
var PortalDispatchContext = /* @__PURE__ */createContext(null);
|
|
71
|
-
var PortalProviderActiveContext = /* @__PURE__ */createContext(false);
|
|
72
|
-
var usePortalState = function
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
56
|
+
var PortalStateContext = /* @__PURE__ */ createContext(null);
|
|
57
|
+
var PortalDispatchContext = /* @__PURE__ */ createContext(null);
|
|
58
|
+
var PortalProviderActiveContext = /* @__PURE__ */ createContext(false);
|
|
59
|
+
var usePortalState = function(hostName) {
|
|
60
|
+
var state = useContext(PortalStateContext);
|
|
61
|
+
if (state === null) throw new Error("'PortalStateContext' cannot be null, please add 'PortalProvider' to the root component.");
|
|
62
|
+
return state[hostName] || [];
|
|
76
63
|
};
|
|
77
|
-
var usePortal = function
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
64
|
+
var usePortal = function() {
|
|
65
|
+
var hostName = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "root";
|
|
66
|
+
var dispatch = useContext(PortalDispatchContext);
|
|
67
|
+
if (dispatch === null) throw new Error("'PortalDispatchContext' cannot be null, please add 'PortalProvider' to the root component.");
|
|
68
|
+
var registerHost2 = useCallback(function() {
|
|
69
|
+
dispatch({
|
|
70
|
+
type: 0,
|
|
71
|
+
hostName
|
|
72
|
+
});
|
|
73
|
+
}, []);
|
|
74
|
+
var deregisterHost2 = useCallback(function() {
|
|
75
|
+
dispatch({
|
|
76
|
+
type: 1,
|
|
77
|
+
hostName
|
|
78
|
+
});
|
|
79
|
+
}, []);
|
|
80
|
+
var addUpdatePortal2 = useCallback(function(name, node) {
|
|
81
|
+
dispatch({
|
|
82
|
+
type: 2,
|
|
83
|
+
hostName,
|
|
84
|
+
portalName: name,
|
|
85
|
+
node
|
|
86
|
+
});
|
|
87
|
+
}, []);
|
|
88
|
+
return {
|
|
89
|
+
registerHost: registerHost2,
|
|
90
|
+
deregisterHost: deregisterHost2,
|
|
91
|
+
addPortal: addUpdatePortal2,
|
|
92
|
+
updatePortal: addUpdatePortal2,
|
|
93
|
+
removePortal: useCallback(function(name) {
|
|
94
|
+
dispatch({
|
|
95
|
+
type: 3,
|
|
96
|
+
hostName,
|
|
97
|
+
portalName: name
|
|
98
|
+
});
|
|
99
|
+
}, [])
|
|
100
|
+
};
|
|
114
101
|
};
|
|
115
|
-
var PortalProviderComponent = function
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
})]
|
|
144
|
-
})
|
|
145
|
-
})
|
|
146
|
-
});
|
|
147
|
-
if (portalState.type === "teleport") return /* @__PURE__ */jsx(NativePortalProvider, {
|
|
148
|
-
children: content
|
|
149
|
-
});
|
|
150
|
-
return content;
|
|
102
|
+
var PortalProviderComponent = function(param) {
|
|
103
|
+
var { rootHostName = "root", shouldAddRootHost = true, children } = param;
|
|
104
|
+
var isAlreadyInProvider = useContext(PortalProviderActiveContext);
|
|
105
|
+
if (process.env.NODE_ENV === "development") {
|
|
106
|
+
if (isAlreadyInProvider && shouldAddRootHost) console.warn(`[tamagui] Nested PortalProvider with shouldAddRootHost detected. This causes hydration mismatches. TamaguiProvider from 'tamagui' already includes PortalProvider - remove the explicit PortalProvider wrapper or set shouldAddRootHost={false}.`);
|
|
107
|
+
}
|
|
108
|
+
var [state, dispatch] = useReducer(reducer, INITIAL_STATE);
|
|
109
|
+
var transitionDispatch = useMemo(function() {
|
|
110
|
+
var next = function(value) {
|
|
111
|
+
startTransition(function() {
|
|
112
|
+
dispatch(value);
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
return next;
|
|
116
|
+
}, [dispatch]);
|
|
117
|
+
var portalState = getPortal().state;
|
|
118
|
+
var content = /* @__PURE__ */ jsx(PortalProviderActiveContext.Provider, {
|
|
119
|
+
value: true,
|
|
120
|
+
children: /* @__PURE__ */ jsx(PortalDispatchContext.Provider, {
|
|
121
|
+
value: transitionDispatch,
|
|
122
|
+
children: /* @__PURE__ */ jsxs(PortalStateContext.Provider, {
|
|
123
|
+
value: state,
|
|
124
|
+
children: [children, shouldAddRootHost && /* @__PURE__ */ jsx(PortalHost, { name: rootHostName })]
|
|
125
|
+
})
|
|
126
|
+
})
|
|
127
|
+
});
|
|
128
|
+
if (portalState.type === "teleport") return /* @__PURE__ */ jsx(NativePortalProvider, { children: content });
|
|
129
|
+
return content;
|
|
151
130
|
};
|
|
152
|
-
var PortalProvider = /* @__PURE__ */memo(PortalProviderComponent);
|
|
131
|
+
var PortalProvider = /* @__PURE__ */ memo(PortalProviderComponent);
|
|
153
132
|
PortalProvider.displayName = "PortalProvider";
|
|
154
|
-
var defaultRenderer = function
|
|
155
|
-
|
|
156
|
-
children
|
|
157
|
-
});
|
|
133
|
+
var defaultRenderer = function(children) {
|
|
134
|
+
return /* @__PURE__ */ jsx(Fragment, { children });
|
|
158
135
|
};
|
|
159
|
-
var PortalHost = /* @__PURE__ */memo(function PortalHost2(props) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
});
|
|
163
|
-
return /* @__PURE__ */jsx(PortalHostNonNative, {
|
|
164
|
-
...props
|
|
165
|
-
});
|
|
136
|
+
var PortalHost = /* @__PURE__ */ memo(function PortalHost2(props) {
|
|
137
|
+
if (getPortal().state.type === "teleport") return /* @__PURE__ */ jsx(NativePortalHost, { name: props.name });
|
|
138
|
+
return /* @__PURE__ */ jsx(PortalHostNonNative, { ...props });
|
|
166
139
|
});
|
|
167
140
|
function PortalHostNonNative(props) {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
return /* @__PURE__ */React.isValidElement(child) ? /* @__PURE__ */React.cloneElement(child, {
|
|
192
|
-
key: child.key,
|
|
193
|
-
...restForwardProps
|
|
194
|
-
}) : child;
|
|
195
|
-
});
|
|
196
|
-
return next;
|
|
197
|
-
}));
|
|
198
|
-
return render(state.map(function (item) {
|
|
199
|
-
return /* @__PURE__ */jsx(React.Fragment, {
|
|
200
|
-
children: item.node
|
|
201
|
-
}, item.name);
|
|
202
|
-
}));
|
|
141
|
+
var { name, forwardProps, render = defaultRenderer } = props;
|
|
142
|
+
var state = usePortalState(name);
|
|
143
|
+
var { registerHost: registerHost2, deregisterHost: deregisterHost2 } = usePortal(props.name);
|
|
144
|
+
useIsomorphicLayoutEffect(function() {
|
|
145
|
+
registerHost2();
|
|
146
|
+
return function() {
|
|
147
|
+
deregisterHost2();
|
|
148
|
+
};
|
|
149
|
+
}, []);
|
|
150
|
+
if (forwardProps) return render(state.map(function(item) {
|
|
151
|
+
var next = item.node;
|
|
152
|
+
var { children, ...restForwardProps } = forwardProps;
|
|
153
|
+
if (forwardProps) return React.Children.map(next, function(child) {
|
|
154
|
+
return /* @__PURE__ */ React.isValidElement(child) ? /* @__PURE__ */ React.cloneElement(child, {
|
|
155
|
+
key: child.key,
|
|
156
|
+
...restForwardProps
|
|
157
|
+
}) : child;
|
|
158
|
+
});
|
|
159
|
+
return next;
|
|
160
|
+
}));
|
|
161
|
+
return render(state.map(function(item) {
|
|
162
|
+
return /* @__PURE__ */ jsx(React.Fragment, { children: item.node }, item.name);
|
|
163
|
+
}));
|
|
203
164
|
}
|
|
165
|
+
|
|
204
166
|
export { ACTIONS, INITIAL_STATE, PortalHost, PortalProvider, usePortal };
|
|
205
167
|
//# sourceMappingURL=GorhomPortal.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Fragment","jsx","jsxs","useIsomorphicLayoutEffect","NativePortalHost","NativePortalProvider","getPortal","startTransition","React","createContext","memo","useCallback","useContext","useMemo","useReducer","ACTIONS","ACTIONS2","INITIAL_STATE","registerHost","state","hostName","deregisterHost","addUpdatePortal","portalName","node","index","findIndex","item","name","push","removePortal","process","env","NODE_ENV","console","info","splice","reducer","action","type","PortalStateContext","PortalDispatchContext","PortalProviderActiveContext","usePortalState","Error","usePortal","arguments","length","dispatch","registerHost2","deregisterHost2","addUpdatePortal2","addPortal","updatePortal","PortalProviderComponent","param","rootHostName","shouldAddRootHost","children","isAlreadyInProvider","warn","transitionDispatch","next","value","portalState","content","Provider","PortalHost","PortalProvider","displayName","defaultRenderer","PortalHost2","props","PortalHostNonNative","forwardProps","render","map","restForwardProps","Children","child","isValidElement","cloneElement","key"],"sources":["GorhomPortal.native.js"],"sourcesContent":["import { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { NativePortalHost, NativePortalProvider, getPortal } from \"@tamagui/native\";\nimport { startTransition } from \"@tamagui/start-transition\";\nimport React, { createContext, memo, useCallback, useContext, useMemo, useReducer } from \"react\";\n\nvar ACTIONS = /* @__PURE__ */ (function(ACTIONS2) {\n\tACTIONS2[ACTIONS2[\"REGISTER_HOST\"] = 0] = \"REGISTER_HOST\";\n\tACTIONS2[ACTIONS2[\"DEREGISTER_HOST\"] = 1] = \"DEREGISTER_HOST\";\n\tACTIONS2[ACTIONS2[\"ADD_UPDATE_PORTAL\"] = 2] = \"ADD_UPDATE_PORTAL\";\n\tACTIONS2[ACTIONS2[\"REMOVE_PORTAL\"] = 3] = \"REMOVE_PORTAL\";\n\treturn ACTIONS2;\n})(ACTIONS || {});\nvar INITIAL_STATE = {};\nvar registerHost = function(state, hostName) {\n\tif (!(hostName in state)) state[hostName] = [];\n\treturn state;\n};\nvar deregisterHost = function(state, hostName) {\n\tdelete state[hostName];\n\treturn state;\n};\nvar addUpdatePortal = function(state, hostName, portalName, node) {\n\tif (!(hostName in state)) state = registerHost(state, hostName);\n\tvar index = state[hostName].findIndex(function(item) {\n\t\treturn item.name === portalName;\n\t});\n\tif (index !== -1) state[hostName][index].node = node;\n\telse state[hostName].push({\n\t\tname: portalName,\n\t\tnode\n\t});\n\treturn state;\n};\nvar removePortal = function(state, hostName, portalName) {\n\tif (!(hostName in state)) {\n\t\tif (process.env.NODE_ENV === \"development\") console.info(`Failed to remove portal '${portalName}', '${hostName}' was not registered!`);\n\t\treturn state;\n\t}\n\tvar index = state[hostName].findIndex(function(item) {\n\t\treturn item.name === portalName;\n\t});\n\tif (index !== -1) state[hostName].splice(index, 1);\n\treturn state;\n};\nvar reducer = function(state, action) {\n\tvar { type } = action;\n\tswitch (type) {\n\t\tcase 0: return registerHost({ ...state }, action.hostName);\n\t\tcase 1: return deregisterHost({ ...state }, action.hostName);\n\t\tcase 2: return addUpdatePortal({ ...state }, action.hostName, action.portalName, action.node);\n\t\tcase 3: return removePortal({ ...state }, action.hostName, action.portalName);\n\t\tdefault: return state;\n\t}\n};\nvar PortalStateContext = /* @__PURE__ */ createContext(null);\nvar PortalDispatchContext = /* @__PURE__ */ createContext(null);\nvar PortalProviderActiveContext = /* @__PURE__ */ createContext(false);\nvar usePortalState = function(hostName) {\n\tvar state = useContext(PortalStateContext);\n\tif (state === null) throw new Error(\"'PortalStateContext' cannot be null, please add 'PortalProvider' to the root component.\");\n\treturn state[hostName] || [];\n};\nvar usePortal = function() {\n\tvar hostName = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : \"root\";\n\tvar dispatch = useContext(PortalDispatchContext);\n\tif (dispatch === null) throw new Error(\"'PortalDispatchContext' cannot be null, please add 'PortalProvider' to the root component.\");\n\tvar registerHost2 = useCallback(function() {\n\t\tdispatch({\n\t\t\ttype: 0,\n\t\t\thostName\n\t\t});\n\t}, []);\n\tvar deregisterHost2 = useCallback(function() {\n\t\tdispatch({\n\t\t\ttype: 1,\n\t\t\thostName\n\t\t});\n\t}, []);\n\tvar addUpdatePortal2 = useCallback(function(name, node) {\n\t\tdispatch({\n\t\t\ttype: 2,\n\t\t\thostName,\n\t\t\tportalName: name,\n\t\t\tnode\n\t\t});\n\t}, []);\n\treturn {\n\t\tregisterHost: registerHost2,\n\t\tderegisterHost: deregisterHost2,\n\t\taddPortal: addUpdatePortal2,\n\t\tupdatePortal: addUpdatePortal2,\n\t\tremovePortal: useCallback(function(name) {\n\t\t\tdispatch({\n\t\t\t\ttype: 3,\n\t\t\t\thostName,\n\t\t\t\tportalName: name\n\t\t\t});\n\t\t}, [])\n\t};\n};\nvar PortalProviderComponent = function(param) {\n\tvar { rootHostName = \"root\", shouldAddRootHost = true, children } = param;\n\tvar isAlreadyInProvider = useContext(PortalProviderActiveContext);\n\tif (process.env.NODE_ENV === \"development\") {\n\t\tif (isAlreadyInProvider && shouldAddRootHost) console.warn(`[tamagui] Nested PortalProvider with shouldAddRootHost detected. This causes hydration mismatches. TamaguiProvider from 'tamagui' already includes PortalProvider - remove the explicit PortalProvider wrapper or set shouldAddRootHost={false}.`);\n\t}\n\tvar [state, dispatch] = useReducer(reducer, INITIAL_STATE);\n\tvar transitionDispatch = useMemo(function() {\n\t\tvar next = function(value) {\n\t\t\tstartTransition(function() {\n\t\t\t\tdispatch(value);\n\t\t\t});\n\t\t};\n\t\treturn next;\n\t}, [dispatch]);\n\tvar portalState = getPortal().state;\n\tvar content = /* @__PURE__ */ jsx(PortalProviderActiveContext.Provider, {\n\t\tvalue: true,\n\t\tchildren: /* @__PURE__ */ jsx(PortalDispatchContext.Provider, {\n\t\t\tvalue: transitionDispatch,\n\t\t\tchildren: /* @__PURE__ */ jsxs(PortalStateContext.Provider, {\n\t\t\t\tvalue: state,\n\t\t\t\tchildren: [children, shouldAddRootHost && /* @__PURE__ */ jsx(PortalHost, { name: rootHostName })]\n\t\t\t})\n\t\t})\n\t});\n\tif (portalState.type === \"teleport\") return /* @__PURE__ */ jsx(NativePortalProvider, { children: content });\n\treturn content;\n};\nvar PortalProvider = /* @__PURE__ */ memo(PortalProviderComponent);\nPortalProvider.displayName = \"PortalProvider\";\nvar defaultRenderer = function(children) {\n\treturn /* @__PURE__ */ jsx(Fragment, { children });\n};\nvar PortalHost = /* @__PURE__ */ memo(function PortalHost2(props) {\n\tif (getPortal().state.type === \"teleport\") return /* @__PURE__ */ jsx(NativePortalHost, { name: props.name });\n\treturn /* @__PURE__ */ jsx(PortalHostNonNative, { ...props });\n});\nfunction PortalHostNonNative(props) {\n\tvar { name, forwardProps, render = defaultRenderer } = props;\n\tvar state = usePortalState(name);\n\tvar { registerHost: registerHost2, deregisterHost: deregisterHost2 } = usePortal(props.name);\n\tuseIsomorphicLayoutEffect(function() {\n\t\tregisterHost2();\n\t\treturn function() {\n\t\t\tderegisterHost2();\n\t\t};\n\t}, []);\n\tif (forwardProps) return render(state.map(function(item) {\n\t\tvar next = item.node;\n\t\tvar { children, ...restForwardProps } = forwardProps;\n\t\tif (forwardProps) return React.Children.map(next, function(child) {\n\t\t\treturn /* @__PURE__ */ React.isValidElement(child) ? /* @__PURE__ */ React.cloneElement(child, {\n\t\t\t\tkey: child.key,\n\t\t\t\t...restForwardProps\n\t\t\t}) : child;\n\t\t});\n\t\treturn next;\n\t}));\n\treturn render(state.map(function(item) {\n\t\treturn /* @__PURE__ */ jsx(React.Fragment, { children: item.node }, item.name);\n\t}));\n}\n\nexport { ACTIONS, INITIAL_STATE, PortalHost, PortalProvider, usePortal };"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"GorhomPortal.native.js","names":[],"sources":["esm/GorhomPortal.native.js"],"sourcesContent":["import { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nimport { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { NativePortalHost, NativePortalProvider, getPortal } from \"@tamagui/native\";\nimport { startTransition } from \"@tamagui/start-transition\";\nimport React, { createContext, memo, useCallback, useContext, useMemo, useReducer } from \"react\";\n\nvar ACTIONS = /* @__PURE__ */ (function(ACTIONS2) {\n\tACTIONS2[ACTIONS2[\"REGISTER_HOST\"] = 0] = \"REGISTER_HOST\";\n\tACTIONS2[ACTIONS2[\"DEREGISTER_HOST\"] = 1] = \"DEREGISTER_HOST\";\n\tACTIONS2[ACTIONS2[\"ADD_UPDATE_PORTAL\"] = 2] = \"ADD_UPDATE_PORTAL\";\n\tACTIONS2[ACTIONS2[\"REMOVE_PORTAL\"] = 3] = \"REMOVE_PORTAL\";\n\treturn ACTIONS2;\n})(ACTIONS || {});\nvar INITIAL_STATE = {};\nvar registerHost = function(state, hostName) {\n\tif (!(hostName in state)) state[hostName] = [];\n\treturn state;\n};\nvar deregisterHost = function(state, hostName) {\n\tdelete state[hostName];\n\treturn state;\n};\nvar addUpdatePortal = function(state, hostName, portalName, node) {\n\tif (!(hostName in state)) state = registerHost(state, hostName);\n\tvar index = state[hostName].findIndex(function(item) {\n\t\treturn item.name === portalName;\n\t});\n\tif (index !== -1) state[hostName][index].node = node;\n\telse state[hostName].push({\n\t\tname: portalName,\n\t\tnode\n\t});\n\treturn state;\n};\nvar removePortal = function(state, hostName, portalName) {\n\tif (!(hostName in state)) {\n\t\tif (process.env.NODE_ENV === \"development\") console.info(`Failed to remove portal '${portalName}', '${hostName}' was not registered!`);\n\t\treturn state;\n\t}\n\tvar index = state[hostName].findIndex(function(item) {\n\t\treturn item.name === portalName;\n\t});\n\tif (index !== -1) state[hostName].splice(index, 1);\n\treturn state;\n};\nvar reducer = function(state, action) {\n\tvar { type } = action;\n\tswitch (type) {\n\t\tcase 0: return registerHost({ ...state }, action.hostName);\n\t\tcase 1: return deregisterHost({ ...state }, action.hostName);\n\t\tcase 2: return addUpdatePortal({ ...state }, action.hostName, action.portalName, action.node);\n\t\tcase 3: return removePortal({ ...state }, action.hostName, action.portalName);\n\t\tdefault: return state;\n\t}\n};\nvar PortalStateContext = /* @__PURE__ */ createContext(null);\nvar PortalDispatchContext = /* @__PURE__ */ createContext(null);\nvar PortalProviderActiveContext = /* @__PURE__ */ createContext(false);\nvar usePortalState = function(hostName) {\n\tvar state = useContext(PortalStateContext);\n\tif (state === null) throw new Error(\"'PortalStateContext' cannot be null, please add 'PortalProvider' to the root component.\");\n\treturn state[hostName] || [];\n};\nvar usePortal = function() {\n\tvar hostName = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : \"root\";\n\tvar dispatch = useContext(PortalDispatchContext);\n\tif (dispatch === null) throw new Error(\"'PortalDispatchContext' cannot be null, please add 'PortalProvider' to the root component.\");\n\tvar registerHost2 = useCallback(function() {\n\t\tdispatch({\n\t\t\ttype: 0,\n\t\t\thostName\n\t\t});\n\t}, []);\n\tvar deregisterHost2 = useCallback(function() {\n\t\tdispatch({\n\t\t\ttype: 1,\n\t\t\thostName\n\t\t});\n\t}, []);\n\tvar addUpdatePortal2 = useCallback(function(name, node) {\n\t\tdispatch({\n\t\t\ttype: 2,\n\t\t\thostName,\n\t\t\tportalName: name,\n\t\t\tnode\n\t\t});\n\t}, []);\n\treturn {\n\t\tregisterHost: registerHost2,\n\t\tderegisterHost: deregisterHost2,\n\t\taddPortal: addUpdatePortal2,\n\t\tupdatePortal: addUpdatePortal2,\n\t\tremovePortal: useCallback(function(name) {\n\t\t\tdispatch({\n\t\t\t\ttype: 3,\n\t\t\t\thostName,\n\t\t\t\tportalName: name\n\t\t\t});\n\t\t}, [])\n\t};\n};\nvar PortalProviderComponent = function(param) {\n\tvar { rootHostName = \"root\", shouldAddRootHost = true, children } = param;\n\tvar isAlreadyInProvider = useContext(PortalProviderActiveContext);\n\tif (process.env.NODE_ENV === \"development\") {\n\t\tif (isAlreadyInProvider && shouldAddRootHost) console.warn(`[tamagui] Nested PortalProvider with shouldAddRootHost detected. This causes hydration mismatches. TamaguiProvider from 'tamagui' already includes PortalProvider - remove the explicit PortalProvider wrapper or set shouldAddRootHost={false}.`);\n\t}\n\tvar [state, dispatch] = useReducer(reducer, INITIAL_STATE);\n\tvar transitionDispatch = useMemo(function() {\n\t\tvar next = function(value) {\n\t\t\tstartTransition(function() {\n\t\t\t\tdispatch(value);\n\t\t\t});\n\t\t};\n\t\treturn next;\n\t}, [dispatch]);\n\tvar portalState = getPortal().state;\n\tvar content = /* @__PURE__ */ jsx(PortalProviderActiveContext.Provider, {\n\t\tvalue: true,\n\t\tchildren: /* @__PURE__ */ jsx(PortalDispatchContext.Provider, {\n\t\t\tvalue: transitionDispatch,\n\t\t\tchildren: /* @__PURE__ */ jsxs(PortalStateContext.Provider, {\n\t\t\t\tvalue: state,\n\t\t\t\tchildren: [children, shouldAddRootHost && /* @__PURE__ */ jsx(PortalHost, { name: rootHostName })]\n\t\t\t})\n\t\t})\n\t});\n\tif (portalState.type === \"teleport\") return /* @__PURE__ */ jsx(NativePortalProvider, { children: content });\n\treturn content;\n};\nvar PortalProvider = /* @__PURE__ */ memo(PortalProviderComponent);\nPortalProvider.displayName = \"PortalProvider\";\nvar defaultRenderer = function(children) {\n\treturn /* @__PURE__ */ jsx(Fragment, { children });\n};\nvar PortalHost = /* @__PURE__ */ memo(function PortalHost2(props) {\n\tif (getPortal().state.type === \"teleport\") return /* @__PURE__ */ jsx(NativePortalHost, { name: props.name });\n\treturn /* @__PURE__ */ jsx(PortalHostNonNative, { ...props });\n});\nfunction PortalHostNonNative(props) {\n\tvar { name, forwardProps, render = defaultRenderer } = props;\n\tvar state = usePortalState(name);\n\tvar { registerHost: registerHost2, deregisterHost: deregisterHost2 } = usePortal(props.name);\n\tuseIsomorphicLayoutEffect(function() {\n\t\tregisterHost2();\n\t\treturn function() {\n\t\t\tderegisterHost2();\n\t\t};\n\t}, []);\n\tif (forwardProps) return render(state.map(function(item) {\n\t\tvar next = item.node;\n\t\tvar { children, ...restForwardProps } = forwardProps;\n\t\tif (forwardProps) return React.Children.map(next, function(child) {\n\t\t\treturn /* @__PURE__ */ React.isValidElement(child) ? /* @__PURE__ */ React.cloneElement(child, {\n\t\t\t\tkey: child.key,\n\t\t\t\t...restForwardProps\n\t\t\t}) : child;\n\t\t});\n\t\treturn next;\n\t}));\n\treturn render(state.map(function(item) {\n\t\treturn /* @__PURE__ */ jsx(React.Fragment, { children: item.node }, item.name);\n\t}));\n}\n\nexport { ACTIONS, INITIAL_STATE, PortalHost, PortalProvider, usePortal };"],"mappings":"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"}
|
|
@@ -1,49 +1,54 @@
|
|
|
1
1
|
import { useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
|
-
import { TamaguiRoot, useThemeName } from "@tamagui/web";
|
|
2
|
+
import { TamaguiRoot, formatDiagnostic, useThemeName } from "@tamagui/web";
|
|
3
3
|
import { useState } from "react";
|
|
4
4
|
import { createPortal } from "react-dom";
|
|
5
5
|
import { allPortalHosts, portalListeners } from "./constants.mjs";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
7
|
+
|
|
8
|
+
const GorhomPortalItem = (props) => {
|
|
9
|
+
const theme = useThemeName();
|
|
10
|
+
if (process.env.NODE_ENV === "development") {
|
|
11
|
+
if (!props.hostName && !props.passThrough) {
|
|
12
|
+
console.warn(formatDiagnostic("TAMAGUI_PORTAL_HOST", "GorhomPortalItem", "hostName is required when passThrough is false", "Set hostName or enable passThrough", "hostName,passThrough", {
|
|
13
|
+
hostName: props.hostName,
|
|
14
|
+
passThrough: props.passThrough
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const cur = allPortalHosts.get(props.hostName || "");
|
|
19
|
+
const [node, setNode] = useState(cur);
|
|
20
|
+
useIsomorphicLayoutEffect(() => {
|
|
21
|
+
if (!props.hostName) return;
|
|
22
|
+
const listener = (newNode) => {
|
|
23
|
+
setNode(newNode);
|
|
24
|
+
};
|
|
25
|
+
portalListeners[props.hostName] ||= /* @__PURE__ */ new Set();
|
|
26
|
+
portalListeners[props.hostName].add(listener);
|
|
27
|
+
const existingHost = allPortalHosts.get(props.hostName);
|
|
28
|
+
if (existingHost && existingHost !== node) {
|
|
29
|
+
setNode(existingHost);
|
|
30
|
+
}
|
|
31
|
+
return () => {
|
|
32
|
+
portalListeners[props.hostName]?.delete(listener);
|
|
33
|
+
};
|
|
34
|
+
}, [props.hostName]);
|
|
35
|
+
useIsomorphicLayoutEffect(() => {
|
|
36
|
+
if (cur && cur !== node) {
|
|
37
|
+
setNode(cur);
|
|
38
|
+
}
|
|
39
|
+
}, [cur, node]);
|
|
40
|
+
if (props.passThrough) {
|
|
41
|
+
return props.children;
|
|
42
|
+
}
|
|
43
|
+
const actualNode = node?.isConnected ? node : null;
|
|
44
|
+
if (!actualNode) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return createPortal(/* @__PURE__ */ jsx(TamaguiRoot, {
|
|
48
|
+
theme,
|
|
49
|
+
children: props.children
|
|
50
|
+
}), actualNode);
|
|
47
51
|
};
|
|
52
|
+
|
|
48
53
|
export { GorhomPortalItem };
|
|
49
54
|
//# sourceMappingURL=GorhomPortalItem.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"file":"GorhomPortalItem.js","names":[],"sources":["esm/GorhomPortalItem.js"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@tamagui/constants\";\nimport { formatDiagnostic, TamaguiRoot, useThemeName } from \"@tamagui/web\";\nimport { useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { allPortalHosts, portalListeners } from \"./constants\";\nimport { jsx } from \"react/jsx-runtime\";\nconst GorhomPortalItem = (props) => {\n const theme = useThemeName();\n if (process.env.NODE_ENV === \"development\") {\n if (!props.hostName && !props.passThrough) {\n console.warn(\n formatDiagnostic(\n \"TAMAGUI_PORTAL_HOST\",\n \"GorhomPortalItem\",\n \"hostName is required when passThrough is false\",\n \"Set hostName or enable passThrough\",\n \"hostName,passThrough\",\n { hostName: props.hostName, passThrough: props.passThrough }\n )\n );\n }\n }\n const cur = allPortalHosts.get(props.hostName || \"\");\n const [node, setNode] = useState(cur);\n useIsomorphicLayoutEffect(() => {\n if (!props.hostName) return;\n const listener = (newNode) => {\n setNode(newNode);\n };\n portalListeners[props.hostName] ||= /* @__PURE__ */ new Set();\n portalListeners[props.hostName].add(listener);\n const existingHost = allPortalHosts.get(props.hostName);\n if (existingHost && existingHost !== node) {\n setNode(existingHost);\n }\n return () => {\n portalListeners[props.hostName]?.delete(listener);\n };\n }, [props.hostName]);\n useIsomorphicLayoutEffect(() => {\n if (cur && cur !== node) {\n setNode(cur);\n }\n }, [cur, node]);\n if (props.passThrough) {\n return props.children;\n }\n const actualNode = node?.isConnected ? node : null;\n if (!actualNode) {\n return null;\n }\n return createPortal(\n /* @__PURE__ */ jsx(TamaguiRoot, { theme, children: props.children }),\n actualNode\n );\n};\nexport {\n GorhomPortalItem\n};\n//# sourceMappingURL=GorhomPortalItem.js.map\n"],"mappings":";;;;;;;;AAMA,MAAM,oBAAoB,UAAU;CAClC,MAAM,QAAQ,aAAa;CAC3B,IAAI,QAAQ,IAAI,aAAa,eAAe;EAC1C,IAAI,CAAC,MAAM,YAAY,CAAC,MAAM,aAAa;GACzC,QAAQ,KACN,iBACE,uBACA,oBACA,kDACA,sCACA,wBACA;IAAE,UAAU,MAAM;IAAU,aAAa,MAAM;GAAY,CAC7D,CACF;EACF;CACF;CACA,MAAM,MAAM,eAAe,IAAI,MAAM,YAAY,EAAE;CACnD,MAAM,CAAC,MAAM,WAAW,SAAS,GAAG;CACpC,gCAAgC;EAC9B,IAAI,CAAC,MAAM,UAAU;EACrB,MAAM,YAAY,YAAY;GAC5B,QAAQ,OAAO;EACjB;EACA,gBAAgB,MAAM,8BAA8B,IAAI,IAAI;EAC5D,gBAAgB,MAAM,UAAU,IAAI,QAAQ;EAC5C,MAAM,eAAe,eAAe,IAAI,MAAM,QAAQ;EACtD,IAAI,gBAAgB,iBAAiB,MAAM;GACzC,QAAQ,YAAY;EACtB;EACA,aAAa;GACX,gBAAgB,MAAM,WAAW,OAAO,QAAQ;EAClD;CACF,GAAG,CAAC,MAAM,QAAQ,CAAC;CACnB,gCAAgC;EAC9B,IAAI,OAAO,QAAQ,MAAM;GACvB,QAAQ,GAAG;EACb;CACF,GAAG,CAAC,KAAK,IAAI,CAAC;CACd,IAAI,MAAM,aAAa;EACrB,OAAO,MAAM;CACf;CACA,MAAM,aAAa,MAAM,cAAc,OAAO;CAC9C,IAAI,CAAC,YAAY;EACf,OAAO;CACT;CACA,OAAO,aACW,oBAAI,aAAa;EAAE;EAAO,UAAU,MAAM;CAAS,CAAC,GACpE,UACF;AACF"}
|