@tamagui/portal 1.135.2 → 1.135.4

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.
@@ -30,14 +30,24 @@ var import_constants = require("@tamagui/constants"),
30
30
  const GorhomPortalItem = props => {
31
31
  !props.hostName && !props.passThrough && console.warn("No hostName");
32
32
  const cur = import_constants2.allPortalHosts.get(props.hostName || ""),
33
- [node, setNode] = (0, import_react.useState)(cur);
34
- return !props.passThrough && cur && node !== cur && setNode(cur), (0, import_constants.useIsomorphicLayoutEffect)(() => {
35
- if (!props.hostName || node) return;
33
+ [node, setNode] = (0, import_react.useState)(cur),
34
+ actualNode = node?.isConnected ? node : null;
35
+ return !props.passThrough && cur && actualNode !== cur && setNode(cur), (0, import_constants.useIsomorphicLayoutEffect)(() => {
36
+ if (!props.hostName) return;
37
+ if (node && !node.isConnected) {
38
+ setNode(null);
39
+ return;
40
+ }
41
+ if (actualNode) return;
42
+ if (cur) {
43
+ setNode(cur);
44
+ return;
45
+ }
36
46
  const listener = newNode => {
37
47
  setNode(newNode);
38
48
  };
39
49
  return import_constants2.portalListeners[props.hostName] ||= /* @__PURE__ */new Set(), import_constants2.portalListeners[props.hostName].add(listener), () => {
40
50
  import_constants2.portalListeners[props.hostName]?.delete(listener);
41
51
  };
42
- }, [node]), props.passThrough ? props.children : node ? (0, import_react_dom.createPortal)(props.children, node) : null;
52
+ }, [node, actualNode, cur, props.hostName]), props.passThrough ? props.children : actualNode ? (0, import_react_dom.createPortal)(props.children, actualNode) : null;
43
53
  };
@@ -20,15 +20,24 @@ module.exports = __toCommonJS(GorhomPortalItem_exports);
20
20
  var import_constants = require("@tamagui/constants"), import_react = require("react"), import_react_dom = require("react-dom"), import_constants2 = require("./constants");
21
21
  const GorhomPortalItem = (props) => {
22
22
  !props.hostName && !props.passThrough && console.warn("No hostName");
23
- const cur = import_constants2.allPortalHosts.get(props.hostName || ""), [node, setNode] = (0, import_react.useState)(cur);
24
- return !props.passThrough && cur && node !== cur && setNode(cur), (0, import_constants.useIsomorphicLayoutEffect)(() => {
25
- if (!props.hostName || node) return;
23
+ const cur = import_constants2.allPortalHosts.get(props.hostName || ""), [node, setNode] = (0, import_react.useState)(cur), actualNode = node?.isConnected ? node : null;
24
+ return !props.passThrough && cur && actualNode !== cur && setNode(cur), (0, import_constants.useIsomorphicLayoutEffect)(() => {
25
+ if (!props.hostName) return;
26
+ if (node && !node.isConnected) {
27
+ setNode(null);
28
+ return;
29
+ }
30
+ if (actualNode) return;
31
+ if (cur) {
32
+ setNode(cur);
33
+ return;
34
+ }
26
35
  const listener = (newNode) => {
27
36
  setNode(newNode);
28
37
  };
29
38
  return import_constants2.portalListeners[props.hostName] ||= /* @__PURE__ */ new Set(), import_constants2.portalListeners[props.hostName].add(listener), () => {
30
39
  import_constants2.portalListeners[props.hostName]?.delete(listener);
31
40
  };
32
- }, [node]), props.passThrough ? props.children : node ? (0, import_react_dom.createPortal)(props.children, node) : null;
41
+ }, [node, actualNode, cur, props.hostName]), props.passThrough ? props.children : actualNode ? (0, import_react_dom.createPortal)(props.children, actualNode) : null;
33
42
  };
34
43
  //# sourceMappingURL=GorhomPortalItem.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/GorhomPortalItem.tsx"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA0C,+BAC1C,eAAyB,kBACzB,mBAA6B,sBAC7BA,oBAAgD;AAGzC,MAAM,mBAAmB,CAAC,UAA2B;AAC1D,EAAI,CAAC,MAAM,YAAY,CAAC,MAAM,eAC5B,QAAQ,KAAK,aAAa;AAG5B,QAAM,MAAM,iCAAe,IAAI,MAAM,YAAY,EAAE,GAC7C,CAAC,MAAM,OAAO,QAAI,uBAAS,GAAG;AAqBpC,SAnBI,CAAC,MAAM,eAAe,OAAO,SAAS,OACxC,QAAQ,GAAG,OAGb,4CAA0B,MAAM;AAE9B,QADI,CAAC,MAAM,YACP,KAAM;AAEV,UAAM,WAAW,CAAC,YAAyB;AACzC,cAAQ,OAAO;AAAA,IACjB;AAEA,6CAAgB,MAAM,QAAQ,MAAM,oBAAI,IAAI,GAC5C,kCAAgB,MAAM,QAAQ,EAAE,IAAI,QAAQ,GACrC,MAAM;AACX,wCAAgB,MAAM,QAAS,GAAG,OAAO,QAAQ;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,IAAI,CAAC,GAEL,MAAM,cACD,MAAM,WAGV,WAIE,+BAAa,MAAM,UAAU,IAAI,IAH/B;AAIX;",
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAA0C,+BAC1C,eAAyB,kBACzB,mBAA6B,sBAC7BA,oBAAgD;AAGzC,MAAM,mBAAmB,CAAC,UAA2B;AAC1D,EAAI,CAAC,MAAM,YAAY,CAAC,MAAM,eAC5B,QAAQ,KAAK,aAAa;AAG5B,QAAM,MAAM,iCAAe,IAAI,MAAM,YAAY,EAAE,GAC7C,CAAC,MAAM,OAAO,QAAI,uBAAyC,GAAG,GAG9D,aAAa,MAAM,cAAc,OAAO;AAkC9C,SAhCI,CAAC,MAAM,eAAe,OAAO,eAAe,OAC9C,QAAQ,GAAG,OAGb,4CAA0B,MAAM;AAC9B,QAAI,CAAC,MAAM,SAAU;AAGrB,QAAI,QAAQ,CAAC,KAAK,aAAa;AAC7B,cAAQ,IAAI;AACZ;AAAA,IACF;AAEA,QAAI,WAAY;AAGhB,QAAI,KAAK;AACP,cAAQ,GAAG;AACX;AAAA,IACF;AAEA,UAAM,WAAW,CAAC,YAAyB;AACzC,cAAQ,OAAO;AAAA,IACjB;AAEA,6CAAgB,MAAM,QAAQ,MAAM,oBAAI,IAAI,GAC5C,kCAAgB,MAAM,QAAQ,EAAE,IAAI,QAAQ,GACrC,MAAM;AACX,wCAAgB,MAAM,QAAS,GAAG,OAAO,QAAQ;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,MAAM,YAAY,KAAK,MAAM,QAAQ,CAAC,GAEtC,MAAM,cACD,MAAM,WAGV,iBAIE,+BAAa,MAAM,UAAU,UAAU,IAHrC;AAIX;",
5
5
  "names": ["import_constants"]
6
6
  }
@@ -4,16 +4,25 @@ import { createPortal } from "react-dom";
4
4
  import { allPortalHosts, portalListeners } from "./constants";
5
5
  const GorhomPortalItem = (props) => {
6
6
  !props.hostName && !props.passThrough && console.warn("No hostName");
7
- const cur = allPortalHosts.get(props.hostName || ""), [node, setNode] = useState(cur);
8
- return !props.passThrough && cur && node !== cur && setNode(cur), useIsomorphicLayoutEffect(() => {
9
- if (!props.hostName || node) return;
7
+ const cur = allPortalHosts.get(props.hostName || ""), [node, setNode] = useState(cur), actualNode = node?.isConnected ? node : null;
8
+ return !props.passThrough && cur && actualNode !== cur && setNode(cur), useIsomorphicLayoutEffect(() => {
9
+ if (!props.hostName) return;
10
+ if (node && !node.isConnected) {
11
+ setNode(null);
12
+ return;
13
+ }
14
+ if (actualNode) return;
15
+ if (cur) {
16
+ setNode(cur);
17
+ return;
18
+ }
10
19
  const listener = (newNode) => {
11
20
  setNode(newNode);
12
21
  };
13
22
  return portalListeners[props.hostName] ||= /* @__PURE__ */ new Set(), portalListeners[props.hostName].add(listener), () => {
14
23
  portalListeners[props.hostName]?.delete(listener);
15
24
  };
16
- }, [node]), props.passThrough ? props.children : node ? createPortal(props.children, node) : null;
25
+ }, [node, actualNode, cur, props.hostName]), props.passThrough ? props.children : actualNode ? createPortal(props.children, actualNode) : null;
17
26
  };
18
27
  export {
19
28
  GorhomPortalItem
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/GorhomPortalItem.tsx"],
4
- "mappings": "AAAA,SAAS,iCAAiC;AAC1C,SAAS,gBAAgB;AACzB,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB,uBAAuB;AAGzC,MAAM,mBAAmB,CAAC,UAA2B;AAC1D,EAAI,CAAC,MAAM,YAAY,CAAC,MAAM,eAC5B,QAAQ,KAAK,aAAa;AAG5B,QAAM,MAAM,eAAe,IAAI,MAAM,YAAY,EAAE,GAC7C,CAAC,MAAM,OAAO,IAAI,SAAS,GAAG;AAqBpC,SAnBI,CAAC,MAAM,eAAe,OAAO,SAAS,OACxC,QAAQ,GAAG,GAGb,0BAA0B,MAAM;AAE9B,QADI,CAAC,MAAM,YACP,KAAM;AAEV,UAAM,WAAW,CAAC,YAAyB;AACzC,cAAQ,OAAO;AAAA,IACjB;AAEA,2BAAgB,MAAM,QAAQ,MAAM,oBAAI,IAAI,GAC5C,gBAAgB,MAAM,QAAQ,EAAE,IAAI,QAAQ,GACrC,MAAM;AACX,sBAAgB,MAAM,QAAS,GAAG,OAAO,QAAQ;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,IAAI,CAAC,GAEL,MAAM,cACD,MAAM,WAGV,OAIE,aAAa,MAAM,UAAU,IAAI,IAH/B;AAIX;",
4
+ "mappings": "AAAA,SAAS,iCAAiC;AAC1C,SAAS,gBAAgB;AACzB,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB,uBAAuB;AAGzC,MAAM,mBAAmB,CAAC,UAA2B;AAC1D,EAAI,CAAC,MAAM,YAAY,CAAC,MAAM,eAC5B,QAAQ,KAAK,aAAa;AAG5B,QAAM,MAAM,eAAe,IAAI,MAAM,YAAY,EAAE,GAC7C,CAAC,MAAM,OAAO,IAAI,SAAyC,GAAG,GAG9D,aAAa,MAAM,cAAc,OAAO;AAkC9C,SAhCI,CAAC,MAAM,eAAe,OAAO,eAAe,OAC9C,QAAQ,GAAG,GAGb,0BAA0B,MAAM;AAC9B,QAAI,CAAC,MAAM,SAAU;AAGrB,QAAI,QAAQ,CAAC,KAAK,aAAa;AAC7B,cAAQ,IAAI;AACZ;AAAA,IACF;AAEA,QAAI,WAAY;AAGhB,QAAI,KAAK;AACP,cAAQ,GAAG;AACX;AAAA,IACF;AAEA,UAAM,WAAW,CAAC,YAAyB;AACzC,cAAQ,OAAO;AAAA,IACjB;AAEA,2BAAgB,MAAM,QAAQ,MAAM,oBAAI,IAAI,GAC5C,gBAAgB,MAAM,QAAQ,EAAE,IAAI,QAAQ,GACrC,MAAM;AACX,sBAAgB,MAAM,QAAS,GAAG,OAAO,QAAQ;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,MAAM,YAAY,KAAK,MAAM,QAAQ,CAAC,GAEtC,MAAM,cACD,MAAM,WAGV,aAIE,aAAa,MAAM,UAAU,UAAU,IAHrC;AAIX;",
5
5
  "names": []
6
6
  }
@@ -5,16 +5,26 @@ import { allPortalHosts, portalListeners } from "./constants.mjs";
5
5
  const GorhomPortalItem = props => {
6
6
  !props.hostName && !props.passThrough && console.warn("No hostName");
7
7
  const cur = allPortalHosts.get(props.hostName || ""),
8
- [node, setNode] = useState(cur);
9
- return !props.passThrough && cur && node !== cur && setNode(cur), useIsomorphicLayoutEffect(() => {
10
- if (!props.hostName || node) return;
8
+ [node, setNode] = useState(cur),
9
+ actualNode = node?.isConnected ? node : null;
10
+ return !props.passThrough && cur && actualNode !== cur && setNode(cur), useIsomorphicLayoutEffect(() => {
11
+ if (!props.hostName) return;
12
+ if (node && !node.isConnected) {
13
+ setNode(null);
14
+ return;
15
+ }
16
+ if (actualNode) return;
17
+ if (cur) {
18
+ setNode(cur);
19
+ return;
20
+ }
11
21
  const listener = newNode => {
12
22
  setNode(newNode);
13
23
  };
14
24
  return portalListeners[props.hostName] ||= /* @__PURE__ */new Set(), portalListeners[props.hostName].add(listener), () => {
15
25
  portalListeners[props.hostName]?.delete(listener);
16
26
  };
17
- }, [node]), props.passThrough ? props.children : node ? createPortal(props.children, node) : null;
27
+ }, [node, actualNode, cur, props.hostName]), props.passThrough ? props.children : actualNode ? createPortal(props.children, actualNode) : null;
18
28
  };
19
29
  export { GorhomPortalItem };
20
30
  //# sourceMappingURL=GorhomPortalItem.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["useIsomorphicLayoutEffect","useState","createPortal","allPortalHosts","portalListeners","GorhomPortalItem","props","hostName","passThrough","console","warn","cur","get","node","setNode","listener","newNode","Set","add","delete","children"],"sources":["../../src/GorhomPortalItem.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,yBAAA,QAAiC;AAC1C,SAASC,QAAA,QAAgB;AACzB,SAASC,YAAA,QAAoB;AAC7B,SAASC,cAAA,EAAgBC,eAAA,QAAuB;AAGzC,MAAMC,gBAAA,GAAoBC,KAAA,IAA2B;EACtD,CAACA,KAAA,CAAMC,QAAA,IAAY,CAACD,KAAA,CAAME,WAAA,IAC5BC,OAAA,CAAQC,IAAA,CAAK,aAAa;EAG5B,MAAMC,GAAA,GAAMR,cAAA,CAAeS,GAAA,CAAIN,KAAA,CAAMC,QAAA,IAAY,EAAE;IAC7C,CAACM,IAAA,EAAMC,OAAO,IAAIb,QAAA,CAASU,GAAG;EAqBpC,OAnBI,CAACL,KAAA,CAAME,WAAA,IAAeG,GAAA,IAAOE,IAAA,KAASF,GAAA,IACxCG,OAAA,CAAQH,GAAG,GAGbX,yBAAA,CAA0B,MAAM;IAE9B,IADI,CAACM,KAAA,CAAMC,QAAA,IACPM,IAAA,EAAM;IAEV,MAAME,QAAA,GAAYC,OAAA,IAAyB;MACzCF,OAAA,CAAQE,OAAO;IACjB;IAEA,OAAAZ,eAAA,CAAgBE,KAAA,CAAMC,QAAQ,MAAM,mBAAIU,GAAA,CAAI,GAC5Cb,eAAA,CAAgBE,KAAA,CAAMC,QAAQ,EAAEW,GAAA,CAAIH,QAAQ,GACrC,MAAM;MACXX,eAAA,CAAgBE,KAAA,CAAMC,QAAS,GAAGY,MAAA,CAAOJ,QAAQ;IACnD;EACF,GAAG,CAACF,IAAI,CAAC,GAELP,KAAA,CAAME,WAAA,GACDF,KAAA,CAAMc,QAAA,GAGVP,IAAA,GAIEX,YAAA,CAAaI,KAAA,CAAMc,QAAA,EAAUP,IAAI,IAH/B;AAIX","ignoreList":[]}
1
+ {"version":3,"names":["useIsomorphicLayoutEffect","useState","createPortal","allPortalHosts","portalListeners","GorhomPortalItem","props","hostName","passThrough","console","warn","cur","get","node","setNode","actualNode","isConnected","listener","newNode","Set","add","delete","children"],"sources":["../../src/GorhomPortalItem.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,yBAAA,QAAiC;AAC1C,SAASC,QAAA,QAAgB;AACzB,SAASC,YAAA,QAAoB;AAC7B,SAASC,cAAA,EAAgBC,eAAA,QAAuB;AAGzC,MAAMC,gBAAA,GAAoBC,KAAA,IAA2B;EACtD,CAACA,KAAA,CAAMC,QAAA,IAAY,CAACD,KAAA,CAAME,WAAA,IAC5BC,OAAA,CAAQC,IAAA,CAAK,aAAa;EAG5B,MAAMC,GAAA,GAAMR,cAAA,CAAeS,GAAA,CAAIN,KAAA,CAAMC,QAAA,IAAY,EAAE;IAC7C,CAACM,IAAA,EAAMC,OAAO,IAAIb,QAAA,CAAyCU,GAAG;IAG9DI,UAAA,GAAaF,IAAA,EAAMG,WAAA,GAAcH,IAAA,GAAO;EAkC9C,OAhCI,CAACP,KAAA,CAAME,WAAA,IAAeG,GAAA,IAAOI,UAAA,KAAeJ,GAAA,IAC9CG,OAAA,CAAQH,GAAG,GAGbX,yBAAA,CAA0B,MAAM;IAC9B,IAAI,CAACM,KAAA,CAAMC,QAAA,EAAU;IAGrB,IAAIM,IAAA,IAAQ,CAACA,IAAA,CAAKG,WAAA,EAAa;MAC7BF,OAAA,CAAQ,IAAI;MACZ;IACF;IAEA,IAAIC,UAAA,EAAY;IAGhB,IAAIJ,GAAA,EAAK;MACPG,OAAA,CAAQH,GAAG;MACX;IACF;IAEA,MAAMM,QAAA,GAAYC,OAAA,IAAyB;MACzCJ,OAAA,CAAQI,OAAO;IACjB;IAEA,OAAAd,eAAA,CAAgBE,KAAA,CAAMC,QAAQ,MAAM,mBAAIY,GAAA,CAAI,GAC5Cf,eAAA,CAAgBE,KAAA,CAAMC,QAAQ,EAAEa,GAAA,CAAIH,QAAQ,GACrC,MAAM;MACXb,eAAA,CAAgBE,KAAA,CAAMC,QAAS,GAAGc,MAAA,CAAOJ,QAAQ;IACnD;EACF,GAAG,CAACJ,IAAA,EAAME,UAAA,EAAYJ,GAAA,EAAKL,KAAA,CAAMC,QAAQ,CAAC,GAEtCD,KAAA,CAAME,WAAA,GACDF,KAAA,CAAMgB,QAAA,GAGVP,UAAA,GAIEb,YAAA,CAAaI,KAAA,CAAMgB,QAAA,EAAUP,UAAU,IAHrC;AAIX","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/portal",
3
- "version": "1.135.2",
3
+ "version": "1.135.4",
4
4
  "source": "src/index.ts",
5
5
  "types": "./types/index.d.ts",
6
6
  "main": "dist/cjs",
@@ -32,15 +32,15 @@
32
32
  }
33
33
  },
34
34
  "dependencies": {
35
- "@tamagui/constants": "1.135.2",
36
- "@tamagui/core": "1.135.2",
37
- "@tamagui/start-transition": "1.135.2",
38
- "@tamagui/use-event": "1.135.2",
39
- "@tamagui/web": "1.135.2",
40
- "@tamagui/z-index-stack": "1.135.2"
35
+ "@tamagui/constants": "1.135.4",
36
+ "@tamagui/core": "1.135.4",
37
+ "@tamagui/start-transition": "1.135.4",
38
+ "@tamagui/use-event": "1.135.4",
39
+ "@tamagui/web": "1.135.4",
40
+ "@tamagui/z-index-stack": "1.135.4"
41
41
  },
42
42
  "devDependencies": {
43
- "@tamagui/build": "1.135.2",
43
+ "@tamagui/build": "1.135.4",
44
44
  "react": "*",
45
45
  "react-dom": "*",
46
46
  "react-native": "^0.79.2"
@@ -10,15 +10,31 @@ export const GorhomPortalItem = (props: PortalItemProps) => {
10
10
  }
11
11
 
12
12
  const cur = allPortalHosts.get(props.hostName || '')
13
- const [node, setNode] = useState(cur)
13
+ const [node, setNode] = useState<HTMLElement | null | undefined>(cur)
14
14
 
15
- if (!props.passThrough && cur && node !== cur) {
15
+ // Check if current node is disconnected and clear it immediately
16
+ const actualNode = node?.isConnected ? node : null
17
+
18
+ if (!props.passThrough && cur && actualNode !== cur) {
16
19
  setNode(cur)
17
20
  }
18
21
 
19
22
  useIsomorphicLayoutEffect(() => {
20
23
  if (!props.hostName) return
21
- if (node) return
24
+
25
+ // Check if current node is still in the document
26
+ if (node && !node.isConnected) {
27
+ setNode(null)
28
+ return
29
+ }
30
+
31
+ if (actualNode) return
32
+
33
+ // If we already have cur from Map, use it immediately
34
+ if (cur) {
35
+ setNode(cur)
36
+ return
37
+ }
22
38
 
23
39
  const listener = (newNode: HTMLElement) => {
24
40
  setNode(newNode)
@@ -29,15 +45,15 @@ export const GorhomPortalItem = (props: PortalItemProps) => {
29
45
  return () => {
30
46
  portalListeners[props.hostName!]?.delete(listener)
31
47
  }
32
- }, [node])
48
+ }, [node, actualNode, cur, props.hostName])
33
49
 
34
50
  if (props.passThrough) {
35
51
  return props.children
36
52
  }
37
53
 
38
- if (!node) {
54
+ if (!actualNode) {
39
55
  return null
40
56
  }
41
57
 
42
- return createPortal(props.children, node)
58
+ return createPortal(props.children, actualNode)
43
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GorhomPortalItem.d.ts","sourceRoot":"","sources":["../src/GorhomPortalItem.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,gBAAgB,GAAI,OAAO,eAAe,QAoCtD,CAAA"}
1
+ {"version":3,"file":"GorhomPortalItem.d.ts","sourceRoot":"","sources":["../src/GorhomPortalItem.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,gBAAgB,GAAI,OAAO,eAAe,QAoDtD,CAAA"}