@tamagui/portal 1.115.5 → 1.116.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/dist/cjs/GorhomPortal.cjs +68 -34
- package/dist/cjs/GorhomPortal.cjs.map +1 -1
- package/dist/cjs/GorhomPortal.native.js +42 -15
- package/dist/cjs/GorhomPortal.native.js.map +2 -2
- package/dist/cjs/Portal.cjs +20 -12
- package/dist/cjs/Portal.cjs.map +1 -1
- package/dist/cjs/Portal.native.cjs +10 -4
- package/dist/cjs/Portal.native.cjs.map +1 -1
- package/dist/cjs/Portal.native.js +5 -5
- package/dist/cjs/Portal.native.js.map +2 -2
- package/dist/cjs/useStackedZIndex.cjs +46 -0
- package/dist/cjs/useStackedZIndex.cjs.map +6 -0
- package/dist/cjs/useStackedZIndex.native.js +45 -0
- package/dist/cjs/useStackedZIndex.native.js.map +6 -0
- package/dist/esm/GorhomPortal.js +42 -15
- package/dist/esm/GorhomPortal.js.map +1 -1
- package/dist/esm/GorhomPortal.mjs +69 -35
- package/dist/esm/GorhomPortal.mjs.map +1 -1
- package/dist/esm/GorhomPortal.native.js +44 -16
- package/dist/esm/GorhomPortal.native.js.map +2 -2
- package/dist/esm/Portal.js +10 -5
- package/dist/esm/Portal.js.map +1 -1
- package/dist/esm/Portal.mjs +20 -12
- package/dist/esm/Portal.mjs.map +1 -1
- package/dist/esm/Portal.native.js +5 -4
- package/dist/esm/Portal.native.js.map +2 -2
- package/dist/esm/useStackedZIndex.js +24 -0
- package/dist/esm/useStackedZIndex.js.map +6 -0
- package/dist/esm/useStackedZIndex.mjs +23 -0
- package/dist/esm/useStackedZIndex.mjs.map +1 -0
- package/dist/esm/useStackedZIndex.native.js +25 -0
- package/dist/esm/useStackedZIndex.native.js.map +6 -0
- package/package.json +10 -12
- package/src/GorhomPortal.tsx +67 -17
- package/src/Portal.native.tsx +6 -2
- package/src/Portal.tsx +24 -20
- package/src/PortalProps.tsx +1 -0
- package/src/useStackedZIndex.tsx +34 -0
- package/types/GorhomPortal.d.ts +3 -2
- package/types/GorhomPortal.d.ts.map +1 -1
- package/types/Portal.d.ts +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 +1 -0
- package/types/PortalProps.d.ts.map +1 -1
- package/types/useStackedZIndex.d.ts +3 -0
- package/types/useStackedZIndex.d.ts.map +1 -0
|
@@ -41,8 +41,9 @@ __export(GorhomPortal_exports, {
|
|
|
41
41
|
module.exports = __toCommonJS(GorhomPortal_exports);
|
|
42
42
|
var import_constants = require("@tamagui/constants"),
|
|
43
43
|
import_core = require("@tamagui/core"),
|
|
44
|
-
import_react = __toESM(require("react")),
|
|
45
44
|
import_start_transition = require("@tamagui/start-transition"),
|
|
45
|
+
import_react = __toESM(require("react")),
|
|
46
|
+
import_react_dom = require("react-dom"),
|
|
46
47
|
import_jsx_runtime = require("react/jsx-runtime"),
|
|
47
48
|
ACTIONS = /* @__PURE__ */(ACTIONS2 => (ACTIONS2[ACTIONS2.REGISTER_HOST = 0] = "REGISTER_HOST", ACTIONS2[ACTIONS2.DEREGISTER_HOST = 1] = "DEREGISTER_HOST", ACTIONS2[ACTIONS2.ADD_UPDATE_PORTAL = 2] = "ADD_UPDATE_PORTAL", ACTIONS2[ACTIONS2.REMOVE_PORTAL = 3] = "REMOVE_PORTAL", ACTIONS2))(ACTIONS || {});
|
|
48
49
|
const INITIAL_STATE = {};
|
|
@@ -157,39 +158,72 @@ PortalProvider.displayName = "PortalProvider";
|
|
|
157
158
|
const defaultRenderer = children => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
|
|
158
159
|
children
|
|
159
160
|
}),
|
|
160
|
-
|
|
161
|
+
PortalHost = (0, import_react.memo)(function (props) {
|
|
162
|
+
return import_constants.isWeb ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(PortalHostWeb, {
|
|
163
|
+
...props
|
|
164
|
+
}) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(PortalHostNonNative, {
|
|
165
|
+
...props
|
|
166
|
+
});
|
|
167
|
+
}),
|
|
168
|
+
allPortalHosts = /* @__PURE__ */new Map();
|
|
169
|
+
function PortalHostWeb(props) {
|
|
170
|
+
return /* @__PURE__ */(0, import_jsx_runtime.jsx)("div", {
|
|
171
|
+
style: {
|
|
172
|
+
display: "contents"
|
|
173
|
+
},
|
|
174
|
+
ref: node => {
|
|
175
|
+
node ? allPortalHosts.set(props.name, node) : allPortalHosts.delete(props.name);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
function PortalHostNonNative(props) {
|
|
180
|
+
const {
|
|
181
|
+
name,
|
|
182
|
+
forwardProps,
|
|
183
|
+
render = defaultRenderer
|
|
184
|
+
} = props,
|
|
185
|
+
state = usePortalState(name),
|
|
186
|
+
{
|
|
187
|
+
registerHost: registerHost2,
|
|
188
|
+
deregisterHost: deregisterHost2
|
|
189
|
+
} = usePortal(props.name);
|
|
190
|
+
return (0, import_react.useEffect)(() => {
|
|
191
|
+
if (!(typeof window > "u")) return registerHost2(), () => {
|
|
192
|
+
deregisterHost2();
|
|
193
|
+
};
|
|
194
|
+
}, []), render(forwardProps ? state.map(item => {
|
|
195
|
+
let next = item.node;
|
|
161
196
|
const {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
197
|
+
children,
|
|
198
|
+
...restForwardProps
|
|
199
|
+
} = forwardProps;
|
|
200
|
+
return forwardProps ? import_react.default.Children.map(next, child => import_react.default.isValidElement(child) ? import_react.default.cloneElement(child, {
|
|
201
|
+
key: child.key,
|
|
202
|
+
...restForwardProps
|
|
203
|
+
}) : child) : next;
|
|
204
|
+
}) : state.map(item => item.node));
|
|
205
|
+
}
|
|
206
|
+
const PortalItem = (0, import_react.memo)(function (props) {
|
|
207
|
+
return import_constants.isWeb ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(PortalItemWeb, {
|
|
208
|
+
...props
|
|
209
|
+
}) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(NonNativePortalComponent, {
|
|
210
|
+
...props
|
|
211
|
+
});
|
|
212
|
+
}),
|
|
213
|
+
PortalItemWeb = props => {
|
|
214
|
+
if (!props.hostName) throw new Error("No name");
|
|
215
|
+
const hostNode = allPortalHosts.get(props.hostName);
|
|
216
|
+
return hostNode ? (0, import_react_dom.createPortal)(props.children, hostNode) : null;
|
|
182
217
|
},
|
|
183
|
-
|
|
184
|
-
PortalHost.displayName = "PortalHost";
|
|
185
|
-
const PortalComponent = props => {
|
|
218
|
+
NonNativePortalComponent = props => {
|
|
186
219
|
const {
|
|
187
220
|
name: _providedName,
|
|
188
221
|
hostName,
|
|
189
222
|
handleOnMount: _providedHandleOnMount,
|
|
190
223
|
handleOnUnmount: _providedHandleOnUnmount,
|
|
191
224
|
handleOnUpdate: _providedHandleOnUpdate,
|
|
192
|
-
children
|
|
225
|
+
children,
|
|
226
|
+
passthrough
|
|
193
227
|
} = props,
|
|
194
228
|
{
|
|
195
229
|
addPortal: addUpdatePortal2,
|
|
@@ -206,11 +240,11 @@ const PortalComponent = props => {
|
|
|
206
240
|
handleOnUpdate = (0, import_core.useEvent)(() => {
|
|
207
241
|
_providedHandleOnUpdate ? _providedHandleOnUpdate(() => addUpdatePortal2(name, children)) : addUpdatePortal2(name, children);
|
|
208
242
|
});
|
|
209
|
-
return (0, import_constants.useIsomorphicLayoutEffect)(() =>
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
}, [
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
243
|
+
return (0, import_constants.useIsomorphicLayoutEffect)(() => {
|
|
244
|
+
if (!passthrough) return handleOnMount(), () => {
|
|
245
|
+
handleOnUnmount();
|
|
246
|
+
};
|
|
247
|
+
}, []), (0, import_react.useEffect)(() => {
|
|
248
|
+
passthrough || handleOnUpdate();
|
|
249
|
+
}, [children]), passthrough ? children : null;
|
|
250
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/GorhomPortal.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["ACTIONS", "registerHost", "deregisterHost", "addUpdatePortal", "removePortal", "React"]
|
|
6
6
|
}
|
|
@@ -31,7 +31,7 @@ __export(GorhomPortal_exports, {
|
|
|
31
31
|
usePortal: () => usePortal
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(GorhomPortal_exports);
|
|
34
|
-
var import_jsx_runtime = require("react/jsx-runtime"), import_constants = require("@tamagui/constants"), import_core = require("@tamagui/core"), import_react = __toESM(require("react")),
|
|
34
|
+
var import_jsx_runtime = require("react/jsx-runtime"), import_constants = require("@tamagui/constants"), import_core = require("@tamagui/core"), import_start_transition = require("@tamagui/start-transition"), import_react = __toESM(require("react")), import_react_dom = require("react-dom"), ACTIONS = /* @__PURE__ */ function(ACTIONS2) {
|
|
35
35
|
return ACTIONS2[ACTIONS2.REGISTER_HOST = 0] = "REGISTER_HOST", ACTIONS2[ACTIONS2.DEREGISTER_HOST = 1] = "DEREGISTER_HOST", ACTIONS2[ACTIONS2.ADD_UPDATE_PORTAL = 2] = "ADD_UPDATE_PORTAL", ACTIONS2[ACTIONS2.REMOVE_PORTAL = 3] = "REMOVE_PORTAL", ACTIONS2;
|
|
36
36
|
}(ACTIONS || {}), INITIAL_STATE = {};
|
|
37
37
|
var registerHost = function(state, hostName) {
|
|
@@ -145,7 +145,24 @@ var defaultRenderer = function(children) {
|
|
|
145
145
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
|
|
146
146
|
children
|
|
147
147
|
});
|
|
148
|
-
},
|
|
148
|
+
}, PortalHost = /* @__PURE__ */ (0, import_react.memo)(function(props) {
|
|
149
|
+
return import_constants.isWeb ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PortalHostWeb, {
|
|
150
|
+
...props
|
|
151
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PortalHostNonNative, {
|
|
152
|
+
...props
|
|
153
|
+
});
|
|
154
|
+
}), allPortalHosts = /* @__PURE__ */ new Map();
|
|
155
|
+
function PortalHostWeb(props) {
|
|
156
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
157
|
+
style: {
|
|
158
|
+
display: "contents"
|
|
159
|
+
},
|
|
160
|
+
ref: function(node) {
|
|
161
|
+
node ? allPortalHosts.set(props.name, node) : allPortalHosts.delete(props.name);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
function PortalHostNonNative(props) {
|
|
149
166
|
var { name, forwardProps, render = defaultRenderer } = props, state = usePortalState(name), { registerHost: registerHost2, deregisterHost: deregisterHost2 } = usePortal(props.name);
|
|
150
167
|
return (0, import_react.useEffect)(function() {
|
|
151
168
|
if (!(typeof window > "u"))
|
|
@@ -153,20 +170,30 @@ var defaultRenderer = function(children) {
|
|
|
153
170
|
deregisterHost2();
|
|
154
171
|
};
|
|
155
172
|
}, []), render(forwardProps ? state.map(function(item) {
|
|
156
|
-
var next = item.node;
|
|
173
|
+
var next = item.node, { children, ...restForwardProps } = forwardProps;
|
|
157
174
|
return forwardProps ? import_react.default.Children.map(next, function(child) {
|
|
158
175
|
return /* @__PURE__ */ import_react.default.isValidElement(child) ? /* @__PURE__ */ import_react.default.cloneElement(child, {
|
|
159
176
|
key: child.key,
|
|
160
|
-
...
|
|
177
|
+
...restForwardProps
|
|
161
178
|
}) : child;
|
|
162
179
|
}) : next;
|
|
163
180
|
}) : state.map(function(item) {
|
|
164
181
|
return item.node;
|
|
165
182
|
}));
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
183
|
+
}
|
|
184
|
+
var PortalItem = /* @__PURE__ */ (0, import_react.memo)(function(props) {
|
|
185
|
+
return import_constants.isWeb ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PortalItemWeb, {
|
|
186
|
+
...props
|
|
187
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NonNativePortalComponent, {
|
|
188
|
+
...props
|
|
189
|
+
});
|
|
190
|
+
}), PortalItemWeb = function(props) {
|
|
191
|
+
if (!props.hostName)
|
|
192
|
+
throw new Error("No name");
|
|
193
|
+
var hostNode = allPortalHosts.get(props.hostName);
|
|
194
|
+
return hostNode ? /* @__PURE__ */ (0, import_react_dom.createPortal)(props.children, hostNode) : null;
|
|
195
|
+
}, NonNativePortalComponent = function(props) {
|
|
196
|
+
var { name: _providedName, hostName, handleOnMount: _providedHandleOnMount, handleOnUnmount: _providedHandleOnUnmount, handleOnUpdate: _providedHandleOnUpdate, children, passthrough } = props, { addPortal: addUpdatePortal2, removePortal: removePortal2 } = usePortal(hostName), id = (0, import_react.useId)(), name = _providedName || id, handleOnMount = (0, import_core.useEvent)(function() {
|
|
170
197
|
_providedHandleOnMount ? _providedHandleOnMount(function() {
|
|
171
198
|
return addUpdatePortal2(name, children);
|
|
172
199
|
}) : addUpdatePortal2(name, children);
|
|
@@ -180,16 +207,16 @@ var PortalComponent = function(props) {
|
|
|
180
207
|
}) : addUpdatePortal2(name, children);
|
|
181
208
|
});
|
|
182
209
|
return (0, import_constants.useIsomorphicLayoutEffect)(function() {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
210
|
+
if (!passthrough)
|
|
211
|
+
return handleOnMount(), function() {
|
|
212
|
+
handleOnUnmount();
|
|
213
|
+
};
|
|
186
214
|
}, []), (0, import_react.useEffect)(function() {
|
|
187
|
-
handleOnUpdate();
|
|
215
|
+
passthrough || handleOnUpdate();
|
|
188
216
|
}, [
|
|
189
217
|
children
|
|
190
|
-
]), null;
|
|
191
|
-
}
|
|
192
|
-
PortalItem.displayName = "Portal";
|
|
218
|
+
]), passthrough ? children : null;
|
|
219
|
+
};
|
|
193
220
|
// Annotate the CommonJS export names for ESM import in node:
|
|
194
221
|
0 && (module.exports = {
|
|
195
222
|
ACTIONS,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Users/n8/tamagui/code/ui/portal/src/GorhomPortal.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAAA,
|
|
5
|
-
"names": ["ACTIONS", "INITIAL_STATE", "registerHost", "state", "hostName", "deregisterHost", "addUpdatePortal", "portalName", "node", "index", "findIndex", "item", "name", "push", "removePortal", "console", "info", "splice", "reducer", "action", "type", "PortalStateContext", "createContext", "PortalDispatchContext", "usePortalState", "useContext", "Error", "usePortal", "dispatch", "useCallback", "addPortal", "updatePortal", "PortalProviderComponent", "rootHostName", "shouldAddRootHost", "children", "useReducer", "INITIAL_STATE", "transitionDispatch", "useMemo", "next", "value", "startTransition", "_jsx", "Provider", "_jsxs", "PortalHost", "PortalProvider", "memo", "displayName", "defaultRenderer", "_Fragment", "
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAAA,mBAAiD,+BAGjD,cAAyB,0BAEzB,0BAAgC,sCAEhC,eASO,2BACP,mBAA6B,sBAOxBA,UAAAA,yBAAAA,UAAAA;qPAAAA;EAAAA,WAAAA,CAAAA,CAAAA,GAOCC,gBAAgB,CAAC;AAiCvB,IAAMC,eAAe,SAACC,OAA0CC,UAAAA;AAC9D,SAAMA,YAAYD,UAChBA,MAAMC,QAAAA,IAAY,CAAA,IAEbD;AACT,GAEME,iBAAiB,SAACF,OAA0CC,UAAAA;AAChE,gBAAOD,MAAMC,QAAAA,GACND;AACT,GAEMG,kBAAkB,SACtBH,OACAC,UACAG,YACAC,MAAAA;AAEA,EAAMJ,YAAYD,UAChBA,QAAQD,aAAaC,OAAOC,QAAAA;AAM9B,MAAMK,QAAQN,MAAMC,QAAAA,EAAUM,UAAU,SAACC,MAAAA;WAASA,KAAKC,SAASL;;AAChE,SAAIE,UAAU,KACZN,MAAMC,QAAAA,EAAUK,KAAAA,EAAOD,OAAOA,OAE9BL,MAAMC,QAAAA,EAAUS,KAAK;IACnBD,MAAML;IACNC;EACF,CAAA,GAEKL;AACT,GAEMW,eAAe,SACnBX,OACAC,UACAG,YAAAA;AAEA,MAAI,EAAEH,YAAYD;AAChBY,mBAAQC,KACN,4BAA4BT,UAAAA,OAAiBH,QAAAA,uBAA+B,GAEvED;AAGT,MAAMM,QAAQN,MAAMC,QAAAA,EAAUM,UAAU,SAACC,MAAAA;WAASA,KAAKC,SAASL;;AAChE,SAAIE,UAAU,MAAIN,MAAMC,QAAAA,EAAUa,OAAOR,OAAO,CAAA,GACzCN;AACT,GAEMe,UAAU,SAACf,OAA0CgB,QAAAA;AACzD,MAAM,EAAEC,KAAI,IAAKD;AACjB,UAAQC,MAAAA;IACN,KAAA;AACE,aAAOlB,aAAa;QAAE,GAAGC;MAAM,GAAGgB,OAAOf,QAAQ;IACnD,KAAA;AACE,aAAOC,eAAe;QAAE,GAAGF;MAAM,GAAGgB,OAAOf,QAAQ;IACrD,KAAA;AACE,aAAOE,gBACL;QAAE,GAAGH;MAAM,GACXgB,OAAOf,UACNe,OAAiCZ,YACjCY,OAAiCX,IAAI;IAE1C,KAAA;AACE,aAAOM,aACL;QAAE,GAAGX;MAAM,GACXgB,OAAOf,UACNe,OAA8BZ,UAAU;IAE7C;AACE,aAAOJ;EACX;AACF,GAEMkB,qBAAqBC,gDAAwD,IAAA,GAC7EC,wBAAwBD,gDAAkD,IAAA,GAE1EE,iBAAiB,SAACpB,UAAAA;AACtB,MAAMD,YAAQsB,yBAAWJ,kBAAAA;AAEzB,MAAIlB,UAAU;AACZ,UAAM,IAAIuB,MACR,yFAAA;AAIJ,SAAOvB,MAAMC,QAAAA,KAAa,CAAA;AAC5B,GAEauB,YAAY,WAAA;MAACvB,WAAAA,UAAAA,SAAAA,KAAAA,UAAAA,CAAAA,MAAAA,SAAAA,UAAAA,CAAAA,IAAW,QAC7BwB,eAAWH,yBAAWF,qBAAAA;AAE5B,MAAIK,aAAa;AACf,UAAM,IAAIF,MACR,4FAAA;AAKJ,MAAMxB,oBAAe2B,0BAAY,WAAA;AAC/BD,aAAS;MACPR,MAAI;MACJhB;IACF,CAAA;EACF,GAAG,CAAA,CAAE,GAECC,sBAAiBwB,0BAAY,WAAA;AACjCD,aAAS;MACPR,MAAI;MACJhB;IACF,CAAA;EACF,GAAG,CAAA,CAAE,GAECE,uBAAkBuB,0BAAY,SAACjB,MAAcJ,MAAAA;AACjDoB,aAAS;MACPR,MAAI;MACJhB;MACAG,YAAYK;MACZJ;IACF,CAAA;EACF,GAAG,CAAA,CAAE,GAECM,oBAAee,0BAAY,SAACjB,MAAAA;AAChCgB,aAAS;MACPR,MAAI;MACJhB;MACAG,YAAYK;IACd,CAAA;EACF,GAAG,CAAA,CAAE;AAGL,SAAO;IACLV,cAAAA;IACAG,gBAAAA;IACAyB,WAAWxB;IACXyB,cAAczB;IACdQ,cAAAA;EACF;AACF,GAsBMkB,0BAA0B,SAAA,OAAA;MAAC,EAC/BC,eAAe,QACfC,oBAAoB,IACpBC,SAAQ,IACY,OACd,CAAChC,OAAOyB,QAAAA,QAAYQ,yBAAWlB,SAASmB,aAAAA,GACxCC,yBAAqBC,sBAAQ,WAAA;AACjC,QAAMC,OAAO,SAACC,OAAAA;AACZC,mDAAgB,WAAA;AACdd,iBAASa,KAAAA;MACX,CAAA;IACF;AACA,WAAOD;EACT,GAAG;IAACZ;GAAS;AAEb,SACE,uCAAAe,KAACpB,sBAAsBqB,UAAQ;IAACH,OAAOH;cACrC,uCAAAO,MAACxB,mBAAmBuB,UAAQ;MAACH,OAAOtC;;QACjCgC;QACAD,qBAAqB,uCAAAS,KAACG,YAAAA;UAAWlC,MAAMqB;;;;;AAIhD,GAEac,iBAAiBC,uCAAKhB,uBAAAA;AACnCe,eAAeE,cAAc;AAkB7B,IAAMC,kBAAkB,SAACf,UAAAA;SAAa,uCAAAQ,KAAA,mBAAAQ,UAAA;;;GAEzBL,aAAaE,uCAAK,SAAoBI,OAAsB;AACvE,SAAIC,yBACK,uCAAAV,KAACW,eAAAA;IAAe,GAAGF;OAGrB,uCAAAT,KAACY,qBAAAA;IAAqB,GAAGH;;AAClC,CAAA,GAEMI,iBAAiB,oBAAIC,IAAAA;AAE3B,SAASH,cAAcF,OAAsB;AAC3C,SACE,uCAAAT,KAACe,OAAAA;IACCC,OAAO;MACLC,SAAS;IACX;IACAC,KAAK,SAACrD,MAAAA;AACJ,MAAIA,OACFgD,eAAeM,IAAIV,MAAMxC,MAAMJ,IAAAA,IAE/BgD,eAAeO,OAAOX,MAAMxC,IAAI;IAEpC;;AAGN;AAEA,SAAS2C,oBAAoBH,OAAsB;AACjD,MAAM,EAAExC,MAAMoD,cAAcC,SAASf,gBAAe,IAAKE,OACnDjD,QAAQqB,eAAeZ,IAAAA,GACvB,EAAEV,cAAAA,eAAcG,gBAAAA,gBAAc,IAAKsB,UAAUyB,MAAMxC,IAAI;AAU7D,aARAsD,wBAAU,WAAA;AACR,QAAI,SAAOC,SAAW;AACtBjE,aAAAA,cAAAA,GACO,WAAA;AACLG,QAAAA,gBAAAA;MACF;EACF,GAAG,CAAA,CAAE,GAGI4D,OADLD,eAEA7D,MAAMiE,IAAI,SAACzD,MAAAA;AACT,QAAI6B,OAAO7B,KAAKH,MAGV,EAAE2B,UAAU,GAAGkC,iBAAAA,IAAqBL;AAE1C,WAAIA,eACKM,aAAAA,QAAMC,SAASH,IAAI5B,MAAM,SAACgC,OAAAA;AAC/B,aAAOF,6BAAAA,QAAMG,eAAeD,KAAAA,IACxBF,6BAAAA,QAAMI,aAAaF,OAAO;QAAEG,KAAKH,MAAMG;QAAK,GAAGN;MAAiB,CAAA,IAChEG;IACN,CAAA,IAGKhC;EACT,CAAA,IAIUrC,MAAMiE,IAAI,SAACzD,MAAAA;WAASA,KAAKH;IAJnC;AAKN;AA8CO,IAAMoE,aAAa5B,uCAAK,SAAoBI,OAAsB;AACvE,SAAIC,yBACK,uCAAAV,KAACkC,eAAAA;IAAe,GAAGzB;OAErB,uCAAAT,KAACmC,0BAAAA;IAA0B,GAAG1B;;AACvC,CAAA,GAEMyB,gBAAgB,SAACzB,OAAAA;AACrB,MAAI,CAACA,MAAMhD;AACT,UAAM,IAAIsB,MAAM,SAAS;AAG3B,MAAMqD,WAAWvB,eAAewB,IAAI5B,MAAMhD,QAAQ;AAElD,SAAK2E,WAIEE,mDAAa7B,MAAMjB,UAAU4C,QAAAA,IAH3B;AAIX,GAEMD,2BAA2B,SAAC1B,OAAAA;AAChC,MAAM,EACJxC,MAAMsE,eACN9E,UACA+E,eAAeC,wBACfC,iBAAiBC,0BACjBC,gBAAgBC,yBAChBrD,UACAsD,YAAW,IACTrC,OAEE,EAAEtB,WAAWxB,kBAAiBQ,cAAAA,cAAY,IAAKa,UAAUvB,QAAAA,GACzDsF,SAAKC,oBAAAA,GACL/E,OAAOsE,iBAAiBQ,IAExBP,oBAAgBS,sBAAS,WAAA;AAC7B,IAAIR,yBACFA,uBAAuB,WAAA;aAAM9E,iBAAgBM,MAAMuB,QAAAA;SAEnD7B,iBAAgBM,MAAMuB,QAAAA;EAE1B,CAAA,GAEMkD,sBAAkBO,sBAAS,WAAA;AAC/B,IAAIN,2BACFA,yBAAyB,WAAA;aAAMxE,cAAaF,IAAAA;SAE5CE,cAAaF,IAAAA;EAEjB,CAAA,GAEM2E,qBAAiBK,sBAAS,WAAA;AAC9B,IAAIJ,0BACFA,wBAAwB,WAAA;aAAMlF,iBAAgBM,MAAMuB,QAAAA;SAEpD7B,iBAAgBM,MAAMuB,QAAAA;EAE1B,CAAA;AAEA0D,yDAA0B,WAAA;AACxB,QAAIJ;AAEJN,2BAAAA,GACO,WAAA;AACLE,wBAAAA;MACF;EACF,GAAG,CAAA,CAAE,OAELnB,wBAAU,WAAA;AACR,IAAIuB,eAEJF,eAAAA;EACF,GAAG;IAACpD;GAAS,GAENsD,cAActD,WAAW;AAClC;",
|
|
5
|
+
"names": ["ACTIONS", "INITIAL_STATE", "registerHost", "state", "hostName", "deregisterHost", "addUpdatePortal", "portalName", "node", "index", "findIndex", "item", "name", "push", "removePortal", "console", "info", "splice", "reducer", "action", "type", "PortalStateContext", "createContext", "PortalDispatchContext", "usePortalState", "useContext", "Error", "usePortal", "dispatch", "useCallback", "addPortal", "updatePortal", "PortalProviderComponent", "rootHostName", "shouldAddRootHost", "children", "useReducer", "INITIAL_STATE", "transitionDispatch", "useMemo", "next", "value", "startTransition", "_jsx", "Provider", "_jsxs", "PortalHost", "PortalProvider", "memo", "displayName", "defaultRenderer", "_Fragment", "props", "isWeb", "PortalHostWeb", "PortalHostNonNative", "allPortalHosts", "Map", "div", "style", "display", "ref", "set", "delete", "forwardProps", "render", "useEffect", "window", "map", "restForwardProps", "React", "Children", "child", "isValidElement", "cloneElement", "key", "PortalItem", "PortalItemWeb", "NonNativePortalComponent", "hostNode", "get", "createPortal", "_providedName", "handleOnMount", "_providedHandleOnMount", "handleOnUnmount", "_providedHandleOnUnmount", "handleOnUpdate", "_providedHandleOnUpdate", "passthrough", "id", "useId", "useEvent", "useIsomorphicLayoutEffect"]
|
|
6
6
|
}
|
package/dist/cjs/Portal.cjs
CHANGED
|
@@ -39,16 +39,24 @@ var import_polyfill_dev = require("@tamagui/polyfill-dev"),
|
|
|
39
39
|
import_stacks = require("@tamagui/stacks"),
|
|
40
40
|
React = __toESM(require("react")),
|
|
41
41
|
import_react_dom = require("react-dom"),
|
|
42
|
+
import_useStackedZIndex = require("./useStackedZIndex.cjs"),
|
|
42
43
|
import_jsx_runtime = require("react/jsx-runtime");
|
|
43
|
-
const Portal = React.memo(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
const Portal = React.memo(propsIn => {
|
|
45
|
+
if (import_constants.isServer) return null;
|
|
46
|
+
const {
|
|
47
|
+
host = globalThis.document?.body,
|
|
48
|
+
stackZIndex,
|
|
49
|
+
...props
|
|
50
|
+
} = propsIn,
|
|
51
|
+
zIndex = (0, import_useStackedZIndex.useStackedZIndex)(propsIn);
|
|
52
|
+
return (0, import_react_dom.createPortal)(/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_stacks.YStack, {
|
|
53
|
+
contain: "strict",
|
|
54
|
+
fullscreen: !0,
|
|
55
|
+
position: "fixed",
|
|
56
|
+
maxWidth: "100vw",
|
|
57
|
+
maxHeight: "100vh",
|
|
58
|
+
pointerEvents: "none",
|
|
59
|
+
...props,
|
|
60
|
+
zIndex
|
|
61
|
+
}), host);
|
|
62
|
+
});
|
package/dist/cjs/Portal.cjs.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Portal.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAO,kCAEP,mBAAyB,+BACzB,gBAAuB,4BACvB,QAAuB,2BACvB,mBAA6B,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAO,kCAEP,mBAAyB,+BACzB,gBAAuB,4BACvB,QAAuB,2BACvB,mBAA6B,sBAG7B,0BAAiC,+BAc7B;AAVG,MAAM,SAAS,MAAM,KAAK,CAAC,YAAyB;AACzD,MAAI;AACF,WAAO;AAGT,QAAM,EAAE,OAAO,WAAW,UAAU,MAAM,aAAa,GAAG,MAAM,IAAI,SAE9D,aAAS,0CAAiB,OAAO;AAEvC,aAAO;AAAA,IACL;AAAA,MAAC;AAAA;AAAA,QACC,SAAQ;AAAA,QACR,YAAU;AAAA,QAEV,UAAS;AAAA,QACT,UAAS;AAAA,QACT,WAAU;AAAA,QACV,eAAc;AAAA,QACb,GAAG;AAAA,QACJ;AAAA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF,CAAC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -38,19 +38,25 @@ var import_stacks = require("@tamagui/stacks"),
|
|
|
38
38
|
React = __toESM(require("react")),
|
|
39
39
|
import_react_native = require("react-native-web"),
|
|
40
40
|
import_GorhomPortal = require("./GorhomPortal.cjs"),
|
|
41
|
+
import_useStackedZIndex = require("./useStackedZIndex.cjs"),
|
|
41
42
|
import_jsx_runtime = require("react/jsx-runtime");
|
|
42
43
|
const isFabric = global?.nativeFabricUIManager;
|
|
43
44
|
let createPortal;
|
|
44
45
|
isFabric ? createPortal = require("react-native/Libraries/Renderer/shims/ReactFabric").createPortal : createPortal = require("react-native/Libraries/Renderer/shims/ReactNative").createPortal;
|
|
45
|
-
const Portal =
|
|
46
|
-
const
|
|
46
|
+
const Portal = propsIn => {
|
|
47
|
+
const {
|
|
48
|
+
stackZIndex,
|
|
49
|
+
...props
|
|
50
|
+
} = propsIn,
|
|
51
|
+
rootTag = React.useContext(import_react_native.RootTagContext),
|
|
52
|
+
zIndex = (0, import_useStackedZIndex.useStackedZIndex)(propsIn),
|
|
47
53
|
contents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_stacks.YStack, {
|
|
48
54
|
pointerEvents: "box-none",
|
|
49
55
|
fullscreen: !0,
|
|
50
56
|
position: "absolute",
|
|
51
57
|
maxWidth: "100%",
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
...props,
|
|
59
|
+
zIndex
|
|
54
60
|
});
|
|
55
61
|
return process.env.TAMAGUI_USE_NATIVE_PORTAL === "false" || import_react_native.Platform.OS === "android" || !rootTag ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_GorhomPortal.PortalItem, {
|
|
56
62
|
hostName: "root",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Portal.native.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB,4BACvB,QAAuB,2BAEvB,sBAAyC,yBAEzC,sBAA2B,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuB,4BACvB,QAAuB,2BAEvB,sBAAyC,yBAEzC,sBAA2B,2BAE3B,0BAAiC,+BAiB7B;AAfJ,MAAM,WAAW,QAAQ;AACzB,IAAI;AACA,WACF,eAAe,QAAQ,mDAAmD,EAAE,eAE5E,eAAe,QAAQ,mDAAmD,EAAE;AAGvE,MAAM,SAAS,CAAC,YAAyB;AAC9C,QAAM,EAAE,aAAa,GAAG,MAAM,IAAI,SAE5B,UAAU,MAAM,WAAW,kCAAc,GACzC,aAAS,0CAAiB,OAAO,GAEjC,WACJ;AAAA,IAAC;AAAA;AAAA,MACC,eAAc;AAAA,MACd,YAAU;AAAA,MACV,UAAS;AAAA,MACT,UAAS;AAAA,MACR,GAAG;AAAA,MACJ;AAAA;AAAA,EACF;AAGF,SACE,QAAQ,IAAI,8BAA8B,WAC1C,6BAAS,OAAO,aAChB,CAAC,UAEM,4CAAC,kCAAW,UAAS,QAAQ,oBAAS,IAGxC,aAAa,UAAU,OAAO;AACvC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -26,16 +26,16 @@ __export(Portal_native_exports, {
|
|
|
26
26
|
Portal: () => Portal
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(Portal_native_exports);
|
|
29
|
-
var import_jsx_runtime = require("react/jsx-runtime"), import_stacks = require("@tamagui/stacks"), React = __toESM(require("react")), import_react_native = require("react-native"), import_GorhomPortal = require("./GorhomPortal"), _global, isFabric = (_global = global) === null || _global === void 0 ? void 0 : _global.nativeFabricUIManager, createPortal;
|
|
29
|
+
var import_jsx_runtime = require("react/jsx-runtime"), import_stacks = require("@tamagui/stacks"), React = __toESM(require("react")), import_react_native = require("react-native"), import_GorhomPortal = require("./GorhomPortal"), import_useStackedZIndex = require("./useStackedZIndex"), _global, isFabric = (_global = global) === null || _global === void 0 ? void 0 : _global.nativeFabricUIManager, createPortal;
|
|
30
30
|
isFabric ? createPortal = require("react-native/Libraries/Renderer/shims/ReactFabric").createPortal : createPortal = require("react-native/Libraries/Renderer/shims/ReactNative").createPortal;
|
|
31
|
-
var Portal = function(
|
|
32
|
-
var rootTag = React.useContext(import_react_native.RootTagContext), contents = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stacks.YStack, {
|
|
31
|
+
var Portal = function(propsIn) {
|
|
32
|
+
var { stackZIndex, ...props } = propsIn, rootTag = React.useContext(import_react_native.RootTagContext), zIndex = (0, import_useStackedZIndex.useStackedZIndex)(propsIn), contents = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_stacks.YStack, {
|
|
33
33
|
pointerEvents: "box-none",
|
|
34
34
|
fullscreen: !0,
|
|
35
35
|
position: "absolute",
|
|
36
36
|
maxWidth: "100%",
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
...props,
|
|
38
|
+
zIndex
|
|
39
39
|
});
|
|
40
40
|
return process.env.TAMAGUI_USE_NATIVE_PORTAL === "false" || import_react_native.Platform.OS === "android" || !rootTag ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_GorhomPortal.PortalItem, {
|
|
41
41
|
hostName: "root",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Users/n8/tamagui/code/ui/portal/src/Portal.native.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAAA,gBAAuB,4BACvB,QAAuB,2BAEvB,sBAAyC,yBAEzC,sBAA2B,
|
|
5
|
-
"names": ["global", "isFabric", "nativeFabricUIManager", "createPortal", "require", "Portal", "props", "rootTag", "React", "useContext", "RootTagContext", "contents", "_jsx", "YStack", "pointerEvents", "fullscreen", "position", "maxWidth", "
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAAA,gBAAuB,4BACvB,QAAuB,2BAEvB,sBAAyC,yBAEzC,sBAA2B,2BAE3B,0BAAiC,+BAEhBA,SAAXC,YAAWD,UAAAA,YAAAA,QAAAA,YAAAA,SAAAA,SAAAA,QAAQE,uBACrBC;AACAF,WACFE,eAAeC,QAAQ,mDAAA,EAAqDD,eAE5EA,eAAeC,QAAQ,mDAAA,EAAqDD;AAGvE,IAAME,SAAS,SAACC,SAAAA;AACrB,MAAM,EAAEC,aAAa,GAAGC,MAAAA,IAAUF,SAE5BG,UAAUC,MAAMC,WAAWC,kCAAAA,GAC3BC,aAASC,0CAAiBR,OAAAA,GAE1BS,WACJ,uCAAAC,KAACC,sBAAAA;IACCC,eAAc;IACdC,YAAU;IACVC,UAAS;IACTC,UAAS;IACR,GAAGb;IACJK;;AAIJ,SACES,QAAQC,IAAIC,8BAA8B,WAC1CC,6BAASC,OAAO,aAChB,CAACjB,UAEM,uCAAAO,KAACW,gCAAAA;IAAWC,UAAS;cAAQb;OAG/BZ,aAAaY,UAAUN,OAAAA;AAChC;",
|
|
5
|
+
"names": ["global", "isFabric", "nativeFabricUIManager", "createPortal", "require", "Portal", "propsIn", "stackZIndex", "props", "rootTag", "React", "useContext", "RootTagContext", "zIndex", "useStackedZIndex", "contents", "_jsx", "YStack", "pointerEvents", "fullscreen", "position", "maxWidth", "process", "env", "TAMAGUI_USE_NATIVE_PORTAL", "Platform", "OS", "PortalItem", "hostName"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: !0
|
|
9
|
+
});
|
|
10
|
+
},
|
|
11
|
+
__copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
+
value: !0
|
|
20
|
+
}), mod);
|
|
21
|
+
var useStackedZIndex_exports = {};
|
|
22
|
+
__export(useStackedZIndex_exports, {
|
|
23
|
+
useStackedZIndex: () => useStackedZIndex
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(useStackedZIndex_exports);
|
|
26
|
+
var import_react = require("react");
|
|
27
|
+
const CurrentPortalZIndices = {},
|
|
28
|
+
useStackedZIndex = props => {
|
|
29
|
+
const {
|
|
30
|
+
stackZIndex,
|
|
31
|
+
zIndex: zIndexProp = 1e3
|
|
32
|
+
} = props,
|
|
33
|
+
zIndex = (() => {
|
|
34
|
+
if (stackZIndex) {
|
|
35
|
+
const highest = Object.values(CurrentPortalZIndices).reduce((acc, cur) => Math.max(acc, cur), 0);
|
|
36
|
+
return Math.max(stackZIndex, highest + 1);
|
|
37
|
+
}
|
|
38
|
+
if (zIndexProp) return zIndexProp;
|
|
39
|
+
})(),
|
|
40
|
+
id = (0, import_react.useId)();
|
|
41
|
+
return (0, import_react.useEffect)(() => {
|
|
42
|
+
if (typeof zIndex == "number") return CurrentPortalZIndices[id] = zIndex, () => {
|
|
43
|
+
delete CurrentPortalZIndices[id];
|
|
44
|
+
};
|
|
45
|
+
}, [zIndex]), zIndex;
|
|
46
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useStackedZIndex.tsx"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAiC;AAGjC,MAAM,wBAAgD,CAAC,GAE1C,mBAAmB,CAAC,UAAuD;AACtF,QAAM,EAAE,aAAa,QAAQ,aAAa,IAAK,IAAI,OAE7C,UAAU,MAAM;AACpB,QAAI,aAAa;AACf,YAAM,UAAU,OAAO,OAAO,qBAAqB,EAAE;AAAA,QACnD,CAAC,KAAK,QAAQ,KAAK,IAAI,KAAK,GAAG;AAAA,QAC/B;AAAA,MACF;AACA,aAAO,KAAK,IAAI,aAAa,UAAU,CAAC;AAAA,IAC1C;AACA,QAAI;AACF,aAAO;AAAA,EAEX,GAAG,GAEG,SAAK,oBAAM;AAEjB,qCAAU,MAAM;AACd,QAAI,OAAO,UAAW;AACpB,mCAAsB,EAAE,IAAI,QACrB,MAAM;AACX,eAAO,sBAAsB,EAAE;AAAA,MACjC;AAAA,EAEJ,GAAG,CAAC,MAAM,CAAC,GAEJ;AACT;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
9
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
return to;
|
|
14
|
+
};
|
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
16
|
+
var useStackedZIndex_exports = {};
|
|
17
|
+
__export(useStackedZIndex_exports, {
|
|
18
|
+
useStackedZIndex: () => useStackedZIndex
|
|
19
|
+
});
|
|
20
|
+
module.exports = __toCommonJS(useStackedZIndex_exports);
|
|
21
|
+
var import_react = require("react"), CurrentPortalZIndices = {}, useStackedZIndex = function(props) {
|
|
22
|
+
var { stackZIndex, zIndex: zIndexProp = 1e3 } = props, zIndex = function() {
|
|
23
|
+
if (stackZIndex) {
|
|
24
|
+
var highest = Object.values(CurrentPortalZIndices).reduce(function(acc, cur) {
|
|
25
|
+
return Math.max(acc, cur);
|
|
26
|
+
}, 0);
|
|
27
|
+
return Math.max(stackZIndex, highest + 1);
|
|
28
|
+
}
|
|
29
|
+
if (zIndexProp)
|
|
30
|
+
return zIndexProp;
|
|
31
|
+
}(), id = (0, import_react.useId)();
|
|
32
|
+
return (0, import_react.useEffect)(function() {
|
|
33
|
+
if (typeof zIndex == "number")
|
|
34
|
+
return CurrentPortalZIndices[id] = zIndex, function() {
|
|
35
|
+
delete CurrentPortalZIndices[id];
|
|
36
|
+
};
|
|
37
|
+
}, [
|
|
38
|
+
zIndex
|
|
39
|
+
]), zIndex;
|
|
40
|
+
};
|
|
41
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
42
|
+
0 && (module.exports = {
|
|
43
|
+
useStackedZIndex
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=useStackedZIndex.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/Users/n8/tamagui/code/ui/portal/src/useStackedZIndex.tsx"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;;;;;mBAAiC,kBAG3BA,wBAAgD,CAAC,GAE1CC,mBAAmB,SAACC,OAAAA;AAC/B,MAAM,EAAEC,aAAaC,QAAQC,aAAa,IAAI,IAAKH,OAE7CE,SAAU,WAAA;AACd,QAAID,aAAa;AACf,UAAMG,UAAUC,OAAOC,OAAOR,qBAAAA,EAAuBS,OACnD,SAACC,KAAKC,KAAAA;eAAQC,KAAKC,IAAIH,KAAKC,GAAAA;SAC5B,CAAA;AAEF,aAAOC,KAAKC,IAAIV,aAAaG,UAAU,CAAA;IACzC;AACA,QAAID;AACF,aAAOA;EAEX,EAAA,GAEMS,SAAKC,oBAAAA;AAEXC,qCAAU,WAAA;AACR,QAAI,OAAOZ,UAAW;AACpBJ,mCAAsBc,EAAAA,IAAMV,QACrB,WAAA;AACL,eAAOJ,sBAAsBc,EAAAA;MAC/B;EAEJ,GAAG;IAACV;GAAO,GAEJA;AACT;",
|
|
5
|
+
"names": ["CurrentPortalZIndices", "useStackedZIndex", "props", "stackZIndex", "zIndex", "zIndexProp", "highest", "Object", "values", "reduce", "acc", "cur", "Math", "max", "id", "useId", "useEffect"]
|
|
6
|
+
}
|
package/dist/esm/GorhomPortal.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
1
|
+
import { isWeb, useIsomorphicLayoutEffect } from "@tamagui/constants";
|
|
2
2
|
import { useEvent } from "@tamagui/core";
|
|
3
|
+
import { startTransition } from "@tamagui/start-transition";
|
|
3
4
|
import React, {
|
|
4
5
|
createContext,
|
|
5
6
|
memo,
|
|
@@ -10,7 +11,7 @@ import React, {
|
|
|
10
11
|
useMemo,
|
|
11
12
|
useReducer
|
|
12
13
|
} from "react";
|
|
13
|
-
import {
|
|
14
|
+
import { createPortal } from "react-dom";
|
|
14
15
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
15
16
|
var ACTIONS = /* @__PURE__ */ ((ACTIONS2) => (ACTIONS2[ACTIONS2.REGISTER_HOST = 0] = "REGISTER_HOST", ACTIONS2[ACTIONS2.DEREGISTER_HOST = 1] = "DEREGISTER_HOST", ACTIONS2[ACTIONS2.ADD_UPDATE_PORTAL = 2] = "ADD_UPDATE_PORTAL", ACTIONS2[ACTIONS2.REMOVE_PORTAL = 3] = "REMOVE_PORTAL", ACTIONS2))(ACTIONS || {});
|
|
16
17
|
const INITIAL_STATE = {};
|
|
@@ -111,7 +112,23 @@ const registerHost = (state, hostName) => (hostName in state || (state[hostName]
|
|
|
111
112
|
] }) });
|
|
112
113
|
}, PortalProvider = memo(PortalProviderComponent);
|
|
113
114
|
PortalProvider.displayName = "PortalProvider";
|
|
114
|
-
const defaultRenderer = (children) => /* @__PURE__ */ jsx(Fragment, { children }),
|
|
115
|
+
const defaultRenderer = (children) => /* @__PURE__ */ jsx(Fragment, { children }), PortalHost = memo(function(props) {
|
|
116
|
+
return isWeb ? /* @__PURE__ */ jsx(PortalHostWeb, { ...props }) : /* @__PURE__ */ jsx(PortalHostNonNative, { ...props });
|
|
117
|
+
}), allPortalHosts = /* @__PURE__ */ new Map();
|
|
118
|
+
function PortalHostWeb(props) {
|
|
119
|
+
return /* @__PURE__ */ jsx(
|
|
120
|
+
"div",
|
|
121
|
+
{
|
|
122
|
+
style: {
|
|
123
|
+
display: "contents"
|
|
124
|
+
},
|
|
125
|
+
ref: (node) => {
|
|
126
|
+
node ? allPortalHosts.set(props.name, node) : allPortalHosts.delete(props.name);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
function PortalHostNonNative(props) {
|
|
115
132
|
const { name, forwardProps, render = defaultRenderer } = props, state = usePortalState(name), { registerHost: registerHost2, deregisterHost: deregisterHost2 } = usePortal(props.name);
|
|
116
133
|
return useEffect(() => {
|
|
117
134
|
if (!(typeof window > "u"))
|
|
@@ -121,19 +138,27 @@ const defaultRenderer = (children) => /* @__PURE__ */ jsx(Fragment, { children }
|
|
|
121
138
|
}, []), render(
|
|
122
139
|
forwardProps ? state.map((item) => {
|
|
123
140
|
let next = item.node;
|
|
124
|
-
|
|
141
|
+
const { children, ...restForwardProps } = forwardProps;
|
|
142
|
+
return forwardProps ? React.Children.map(next, (child) => React.isValidElement(child) ? React.cloneElement(child, { key: child.key, ...restForwardProps }) : child) : next;
|
|
125
143
|
}) : state.map((item) => item.node)
|
|
126
144
|
);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
|
|
145
|
+
}
|
|
146
|
+
const PortalItem = memo(function(props) {
|
|
147
|
+
return isWeb ? /* @__PURE__ */ jsx(PortalItemWeb, { ...props }) : /* @__PURE__ */ jsx(NonNativePortalComponent, { ...props });
|
|
148
|
+
}), PortalItemWeb = (props) => {
|
|
149
|
+
if (!props.hostName)
|
|
150
|
+
throw new Error("No name");
|
|
151
|
+
const hostNode = allPortalHosts.get(props.hostName);
|
|
152
|
+
return hostNode ? createPortal(props.children, hostNode) : null;
|
|
153
|
+
}, NonNativePortalComponent = (props) => {
|
|
130
154
|
const {
|
|
131
155
|
name: _providedName,
|
|
132
156
|
hostName,
|
|
133
157
|
handleOnMount: _providedHandleOnMount,
|
|
134
158
|
handleOnUnmount: _providedHandleOnUnmount,
|
|
135
159
|
handleOnUpdate: _providedHandleOnUpdate,
|
|
136
|
-
children
|
|
160
|
+
children,
|
|
161
|
+
passthrough
|
|
137
162
|
} = props, { addPortal: addUpdatePortal2, removePortal: removePortal2 } = usePortal(hostName), id = useId(), name = _providedName || id, handleOnMount = useEvent(() => {
|
|
138
163
|
_providedHandleOnMount ? _providedHandleOnMount(() => addUpdatePortal2(name, children)) : addUpdatePortal2(name, children);
|
|
139
164
|
}), handleOnUnmount = useEvent(() => {
|
|
@@ -141,13 +166,15 @@ const PortalComponent = (props) => {
|
|
|
141
166
|
}), handleOnUpdate = useEvent(() => {
|
|
142
167
|
_providedHandleOnUpdate ? _providedHandleOnUpdate(() => addUpdatePortal2(name, children)) : addUpdatePortal2(name, children);
|
|
143
168
|
});
|
|
144
|
-
return useIsomorphicLayoutEffect(() =>
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
},
|
|
150
|
-
|
|
169
|
+
return useIsomorphicLayoutEffect(() => {
|
|
170
|
+
if (!passthrough)
|
|
171
|
+
return handleOnMount(), () => {
|
|
172
|
+
handleOnUnmount();
|
|
173
|
+
};
|
|
174
|
+
}, []), useEffect(() => {
|
|
175
|
+
passthrough || handleOnUpdate();
|
|
176
|
+
}, [children]), passthrough ? children : null;
|
|
177
|
+
};
|
|
151
178
|
export {
|
|
152
179
|
ACTIONS,
|
|
153
180
|
INITIAL_STATE,
|