@multiplatform.one/router 6.4.3 → 6.6.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.
@@ -68,17 +68,31 @@ class DomStackAdapter {
68
68
  }
69
69
  }
70
70
  const PAGE_STYLE = {
71
- position: "absolute",
72
- inset: 0,
71
+ position: "relative",
72
+ flex: "1 1 auto",
73
+ minHeight: 0,
73
74
  display: "flex",
74
75
  flexDirection: "column",
75
76
  overflow: "auto"
76
77
  };
78
+ function useZeroHeightWarning(ref) {
79
+ (0, import_react.useEffect)(() => {
80
+ if (process.env.NODE_ENV === "production") return;
81
+ const el = ref.current;
82
+ if (!el) return;
83
+ const raf = requestAnimationFrame(() => {
84
+ if (el.offsetParent === null || el.getBoundingClientRect().height > 0) return;
85
+ console.error("[stack nav] DomNavigationHost rendered 0px tall \u2014 every page is clipped and this surface paints nothing. Give the mount node a definite height (e.g. `#app { display: flex; flex-direction: column; min-height: 100vh }`) or pass `style={{ minHeight: \u2026 }}` to the host.");
86
+ });
87
+ return () => cancelAnimationFrame(raf);
88
+ }, [ref]);
89
+ }
77
90
  function DomNavigationHost({
78
91
  routes,
79
92
  initialHref,
80
93
  style
81
94
  }) {
95
+ const hostRef = (0, import_react.useRef)(null);
82
96
  const adapterRef = (0, import_react.useRef)(null);
83
97
  adapterRef.current ??= new DomStackAdapter(routes[0]?.tag ?? "", () => import_navigator.stackNavigator.syncFromHost());
84
98
  const initialHrefRef = (0, import_react.useRef)(initialHref);
@@ -90,10 +104,14 @@ function DomNavigationHost({
90
104
  if (restore) import_navigator.stackNavigator.replace(restore);
91
105
  return () => import_navigator.stackNavigator.detach();
92
106
  }, []);
107
+ useZeroHeightWarning(hostRef);
93
108
  const nav = (0, import_navigator.useNavState)();
94
109
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)("div", {
110
+ ref: hostRef,
95
111
  style: {
96
112
  position: "relative",
113
+ display: "flex",
114
+ flexDirection: "column",
97
115
  flex: 1,
98
116
  minHeight: 0,
99
117
  height: "100%",
@@ -124,12 +124,27 @@ var DomStackAdapter = /* @__PURE__ */function () {
124
124
  return DomStackAdapter2;
125
125
  }();
126
126
  var PAGE_STYLE = {
127
- position: "absolute",
128
- inset: 0,
127
+ position: "relative",
128
+ flex: "1 1 auto",
129
+ minHeight: 0,
129
130
  display: "flex",
130
131
  flexDirection: "column",
131
132
  overflow: "auto"
132
133
  };
134
+ function useZeroHeightWarning(ref) {
135
+ (0, import_react.useEffect)(function () {
136
+ if (process.env.NODE_ENV === "production") return;
137
+ var el = ref.current;
138
+ if (!el) return;
139
+ var raf = requestAnimationFrame(function () {
140
+ if (el.offsetParent === null || el.getBoundingClientRect().height > 0) return;
141
+ console.error("[stack nav] DomNavigationHost rendered 0px tall \u2014 every page is clipped and this surface paints nothing. Give the mount node a definite height (e.g. `#app { display: flex; flex-direction: column; min-height: 100vh }`) or pass `style={{ minHeight: \u2026 }}` to the host.");
142
+ });
143
+ return function () {
144
+ return cancelAnimationFrame(raf);
145
+ };
146
+ }, [ref]);
147
+ }
133
148
  function DomNavigationHost(param) {
134
149
  var {
135
150
  routes,
@@ -138,6 +153,7 @@ function DomNavigationHost(param) {
138
153
  } = param;
139
154
  var _adapterRef, _current, _ref;
140
155
  var _routes_;
156
+ var hostRef = (0, import_react.useRef)(null);
141
157
  var adapterRef = (0, import_react.useRef)(null);
142
158
  (_current = (_adapterRef = adapterRef).current) !== null && _current !== void 0 ? _current : _adapterRef.current = new DomStackAdapter((_ref = (_routes_ = routes[0]) === null || _routes_ === void 0 ? void 0 : _routes_.tag) !== null && _ref !== void 0 ? _ref : "", function () {
143
159
  return import_navigator.stackNavigator.syncFromHost();
@@ -153,10 +169,14 @@ function DomNavigationHost(param) {
153
169
  return import_navigator.stackNavigator.detach();
154
170
  };
155
171
  }, []);
172
+ useZeroHeightWarning(hostRef);
156
173
  var nav = (0, import_navigator.useNavState)();
157
174
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)("div", {
175
+ ref: hostRef,
158
176
  style: {
159
177
  position: "relative",
178
+ display: "flex",
179
+ flexDirection: "column",
160
180
  flex: 1,
161
181
  minHeight: 0,
162
182
  height: "100%",
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","DomNavigationHost_exports","__export","DomNavigationHost","DomStackAdapter","module","exports","import_jsx_runtime","require","import_react","import_navigator","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","DomStackAdapter2","rootTag","onChanged","stack","push_by_tag","tag","push","pop","pop_to_tag","idx","lastIndexOf","slice","replace_with_tags","tags"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","DomNavigationHost_exports","__export","DomNavigationHost","DomStackAdapter","module","exports","import_jsx_runtime","require","import_react","import_navigator","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","DomStackAdapter2","rootTag","onChanged","stack","push_by_tag","tag","push","pop","pop_to_tag","idx","lastIndexOf","slice","replace_with_tags","tags","get_navigation_stack","snapshot","get_n_items","get_item","index","get_tag","_snapshot_index","PAGE_STYLE","position","flex","minHeight","display","flexDirection","overflow"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -40,17 +40,31 @@ class DomStackAdapter {
40
40
  }
41
41
  }
42
42
  const PAGE_STYLE = {
43
- position: "absolute",
44
- inset: 0,
43
+ position: "relative",
44
+ flex: "1 1 auto",
45
+ minHeight: 0,
45
46
  display: "flex",
46
47
  flexDirection: "column",
47
48
  overflow: "auto"
48
49
  };
50
+ function useZeroHeightWarning(ref) {
51
+ useEffect(() => {
52
+ if (process.env.NODE_ENV === "production") return;
53
+ const el = ref.current;
54
+ if (!el) return;
55
+ const raf = requestAnimationFrame(() => {
56
+ if (el.offsetParent === null || el.getBoundingClientRect().height > 0) return;
57
+ console.error("[stack nav] DomNavigationHost rendered 0px tall \u2014 every page is clipped and this surface paints nothing. Give the mount node a definite height (e.g. `#app { display: flex; flex-direction: column; min-height: 100vh }`) or pass `style={{ minHeight: \u2026 }}` to the host.");
58
+ });
59
+ return () => cancelAnimationFrame(raf);
60
+ }, [ref]);
61
+ }
49
62
  function DomNavigationHost({
50
63
  routes,
51
64
  initialHref,
52
65
  style
53
66
  }) {
67
+ const hostRef = useRef(null);
54
68
  const adapterRef = useRef(null);
55
69
  adapterRef.current ??= new DomStackAdapter(routes[0]?.tag ?? "", () => stackNavigator.syncFromHost());
56
70
  const initialHrefRef = useRef(initialHref);
@@ -62,10 +76,14 @@ function DomNavigationHost({
62
76
  if (restore) stackNavigator.replace(restore);
63
77
  return () => stackNavigator.detach();
64
78
  }, []);
79
+ useZeroHeightWarning(hostRef);
65
80
  const nav = useNavState();
66
81
  return /* @__PURE__ */jsx("div", {
82
+ ref: hostRef,
67
83
  style: {
68
84
  position: "relative",
85
+ display: "flex",
86
+ flexDirection: "column",
69
87
  flex: 1,
70
88
  minHeight: 0,
71
89
  height: "100%",
@@ -1 +1 @@
1
- {"version":3,"names":["Suspense","useEffect","useRef","RouteTagContext","stackNavigator","useNavState","jsx","DomStackAdapter","stack","onChanged","constructor","rootTag","push_by_tag","tag","push","pop","length","pop_to_tag","idx","lastIndexOf","slice","replace_with_tags","tags","get_navigation_stack","snapshot","get_n_items","get_item","index","get_tag","PAGE_STYLE","position","inset","display","flexDirection","overflow","DomNavigationHost","routes","initialHref","style","adapterRef","current","syncFromHost","initialHrefRef","adapter","attach","restore","replace","detach","nav","flex","minHeight","height","children","map","route","active","mounted","isVisited","Provider","value","fallback","element"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Suspense","useEffect","useRef","RouteTagContext","stackNavigator","useNavState","jsx","DomStackAdapter","stack","onChanged","constructor","rootTag","push_by_tag","tag","push","pop","length","pop_to_tag","idx","lastIndexOf","slice","replace_with_tags","tags","get_navigation_stack","snapshot","get_n_items","get_item","index","get_tag","PAGE_STYLE","position","flex","minHeight","display","flexDirection","overflow","useZeroHeightWarning","ref","process","env","NODE_ENV","el","current","raf","requestAnimationFrame","offsetParent","getBoundingClientRect","height","console","error","cancelAnimationFrame","DomNavigationHost","routes","initialHref","style","hostRef","adapterRef","syncFromHost","initialHrefRef","adapter","attach","restore","replace","detach","nav","children","map","route","active","mounted","isVisited","Provider","value","fallback","element"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"AA4BA,SAASA,QAAA,EAAUC,SAAA,EAAWC,MAAA,QAAc;AAC5C,SACEC,eAAA,EACAC,cAAA,EACAC,WAAA,QAIK;AAqKO,SAAAC,GAAA;AAhKP,MAAMC,eAAA,CAA2C;EAC9CC,KAAA;EACSC,SAAA;EAEjBC,YAAYC,OAAA,EAAiBF,SAAA,EAAuB;IAClD,KAAKD,KAAA,GAAQG,OAAA,GAAU,CAACA,OAAO,IAAI,EAAC;IACpC,KAAKF,SAAA,GAAYA,SAAA;EACnB;EAEAG,YAAYC,GAAA,EAAmB;IAC7B,KAAKL,KAAA,CAAMM,IAAA,CAAKD,GAAG;IACnB,KAAKJ,SAAA,CAAU;EACjB;EAEAM,IAAA,EAAe;IACb,IAAI,KAAKP,KAAA,CAAMQ,MAAA,IAAU,GAAG,OAAO;IACnC,KAAKR,KAAA,CAAMO,GAAA,CAAI;IACf,KAAKN,SAAA,CAAU;IACf,OAAO;EACT;EAEAQ,WAAWJ,GAAA,EAAsB;IAC/B,MAAMK,GAAA,GAAM,KAAKV,KAAA,CAAMW,WAAA,CAAYN,GAAG;IACtC,IAAIK,GAAA,KAAQ,MAAMA,GAAA,KAAQ,KAAKV,KAAA,CAAMQ,MAAA,GAAS,GAAG,OAAO;IACxD,KAAKR,KAAA,GAAQ,KAAKA,KAAA,CAAMY,KAAA,CAAM,GAAGF,GAAA,GAAM,CAAC;IACxC,KAAKT,SAAA,CAAU;IACf,OAAO;EACT;EAEAY,kBAAkBC,IAAA,EAAsB;IACtC,KAAKd,KAAA,GAAQ,CAAC,GAAGc,IAAI;IACrB,KAAKb,SAAA,CAAU;EACjB;EAEAc,qBAAA,EAGE;IACA,MAAMC,QAAA,GAAW,KAAKhB,KAAA;IACtB,OAAO;MACLiB,WAAA,EAAaA,CAAA,KAAMD,QAAA,CAASR,MAAA;MAC5BU,QAAA,EAAWC,KAAA,IACTA,KAAA,IAAS,KAAKA,KAAA,GAAQH,QAAA,CAASR,MAAA,GAAS;QAAEY,OAAA,EAASA,CAAA,KAAMJ,QAAA,CAASG,KAAK,KAAK;MAAK,IAAI;IACzF;EACF;AACF;AA+BA,MAAME,UAAA,GAA4B;EAChCC,QAAA,EAAU;EACVC,IAAA,EAAM;EACNC,SAAA,EAAW;EACXC,OAAA,EAAS;EACTC,aAAA,EAAe;EACfC,QAAA,EAAU;AACZ;AAIA,SAASC,qBAAqBC,GAAA,EAA+C;EAC3EpC,SAAA,CAAU,MAAM;IACd,IAAIqC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,cAAc;IAC3C,MAAMC,EAAA,GAAKJ,GAAA,CAAIK,OAAA;IACf,IAAI,CAACD,EAAA,EAAI;IAGT,MAAME,GAAA,GAAMC,qBAAA,CAAsB,MAAM;MAGtC,IAAIH,EAAA,CAAGI,YAAA,KAAiB,QAAQJ,EAAA,CAAGK,qBAAA,CAAsB,EAAEC,MAAA,GAAS,GAAG;MACvEC,OAAA,CAAQC,KAAA,CACN,qRAIF;IACF,CAAC;IACD,OAAO,MAAMC,oBAAA,CAAqBP,GAAG;EACvC,GAAG,CAACN,GAAG,CAAC;AACV;AAEO,SAASc,kBAAkB;EAChCC,MAAA;EACAC,WAAA;EACAC;AACF,GAAsC;EACpC,MAAMC,OAAA,GAAUrD,MAAA,CAAuB,IAAI;EAC3C,MAAMsD,UAAA,GAAatD,MAAA,CAA+B,IAAI;EACtDsD,UAAA,CAAWd,OAAA,KAAY,IAAInC,eAAA,CAAgB6C,MAAA,CAAO,CAAC,GAAGvC,GAAA,IAAO,IAAI,MAC/DT,cAAA,CAAeqD,YAAA,CAAa,CAC9B;EAGA,MAAMC,cAAA,GAAiBxD,MAAA,CAAOmD,WAAW;EAEzCpD,SAAA,CAAU,MAAM;IACd,MAAM0D,OAAA,GAAUH,UAAA,CAAWd,OAAA;IAC3B,IAAI,CAACiB,OAAA,EAAS;IACdvD,cAAA,CAAewD,MAAA,CAAOD,OAAO;IAC7B,MAAME,OAAA,GAAUH,cAAA,CAAehB,OAAA;IAC/B,IAAImB,OAAA,EAASzD,cAAA,CAAe0D,OAAA,CAAQD,OAAO;IAC3C,OAAO,MAAMzD,cAAA,CAAe2D,MAAA,CAAO;EACrC,GAAG,EAAE;EAEL3B,oBAAA,CAAqBmB,OAAO;EAE5B,MAAMS,GAAA,GAAM3D,WAAA,CAAY;EAExB,OACE,eAAAC,GAAA,CAAC;IACC+B,GAAA,EAAKkB,OAAA;IACLD,KAAA,EAAO;MACLxB,QAAA,EAAU;MACVG,OAAA,EAAS;MACTC,aAAA,EAAe;MACfH,IAAA,EAAM;MACNC,SAAA,EAAW;MACXe,MAAA,EAAQ;MACR,GAAGO;IACL;IAECW,QAAA,EAAAb,MAAA,CAAOc,GAAA,CAAKC,KAAA,IAAU;MACrB,MAAMC,MAAA,GAASJ,GAAA,CAAInD,GAAA,KAAQsD,KAAA,CAAMtD,GAAA;MACjC,MAAMwD,OAAA,GAAUjE,cAAA,CAAekE,SAAA,CAAUH,KAAA,CAAMtD,GAAG;MAClD,OACE,eAAAP,GAAA,CAAC;QAEC,kBAAgB6D,KAAA,CAAMtD,GAAA;QACtB,oBAAkBuD,MAAA,GAAS,SAAS;QACpCd,KAAA,EAAO;UAAE,GAAGzB,UAAA;UAAYI,OAAA,EAASmC,MAAA,GAAS,SAAS;QAAO;QAE1DH,QAAA,iBAAA3D,GAAA,CAACH,eAAA,CAAgBoE,QAAA,EAAhB;UAAyBC,KAAA,EAAOL,KAAA,CAAMtD,GAAA;UACrCoD,QAAA,iBAAA3D,GAAA,CAACN,QAAA;YAASyE,QAAA,EAAU;YAAOR,QAAA,EAAAI,OAAA,GAAUF,KAAA,CAAMO,OAAA,GAAU;UAAA,CAAK;QAAA,CAC5D;MAAA,GAPKP,KAAA,CAAMtD,GAQb;IAEJ,CAAC;EAAA,CACH;AAEJ","ignoreList":[]}
@@ -94,12 +94,27 @@ var DomStackAdapter = /* @__PURE__ */function () {
94
94
  return DomStackAdapter2;
95
95
  }();
96
96
  var PAGE_STYLE = {
97
- position: "absolute",
98
- inset: 0,
97
+ position: "relative",
98
+ flex: "1 1 auto",
99
+ minHeight: 0,
99
100
  display: "flex",
100
101
  flexDirection: "column",
101
102
  overflow: "auto"
102
103
  };
104
+ function useZeroHeightWarning(ref) {
105
+ useEffect(function () {
106
+ if (process.env.NODE_ENV === "production") return;
107
+ var el = ref.current;
108
+ if (!el) return;
109
+ var raf = requestAnimationFrame(function () {
110
+ if (el.offsetParent === null || el.getBoundingClientRect().height > 0) return;
111
+ console.error("[stack nav] DomNavigationHost rendered 0px tall \u2014 every page is clipped and this surface paints nothing. Give the mount node a definite height (e.g. `#app { display: flex; flex-direction: column; min-height: 100vh }`) or pass `style={{ minHeight: \u2026 }}` to the host.");
112
+ });
113
+ return function () {
114
+ return cancelAnimationFrame(raf);
115
+ };
116
+ }, [ref]);
117
+ }
103
118
  function DomNavigationHost(param) {
104
119
  var {
105
120
  routes,
@@ -108,6 +123,7 @@ function DomNavigationHost(param) {
108
123
  } = param;
109
124
  var _adapterRef, _current, _ref;
110
125
  var _routes_;
126
+ var hostRef = useRef(null);
111
127
  var adapterRef = useRef(null);
112
128
  (_current = (_adapterRef = adapterRef).current) !== null && _current !== void 0 ? _current : _adapterRef.current = new DomStackAdapter((_ref = (_routes_ = routes[0]) === null || _routes_ === void 0 ? void 0 : _routes_.tag) !== null && _ref !== void 0 ? _ref : "", function () {
113
129
  return stackNavigator.syncFromHost();
@@ -123,10 +139,14 @@ function DomNavigationHost(param) {
123
139
  return stackNavigator.detach();
124
140
  };
125
141
  }, []);
142
+ useZeroHeightWarning(hostRef);
126
143
  var nav = useNavState();
127
144
  return /* @__PURE__ */_jsx("div", {
145
+ ref: hostRef,
128
146
  style: {
129
147
  position: "relative",
148
+ display: "flex",
149
+ flexDirection: "column",
130
150
  flex: 1,
131
151
  minHeight: 0,
132
152
  height: "100%",
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","Suspense","useEffect","useRef","RouteTagContext","stackNavigator","useNavState","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","DomStackAdapter","DomStackAdapter2","rootTag","onChanged","stack","push_by_tag","tag","push","pop","pop_to_tag","idx","lastIndexOf","slice","replace_with_tags","tags","get_navigation_stack"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"AAwBA,SAASA,GAAA,IAAAC,IAAU,2BAAyB;AAC5C,SAAAC,QAAA,EAAAC,SAAA,EAAAC,MAAA;AAAA,SACEC,eAAA,EAAAC,cAAA,EAAAC,WAAA;AAAA,SACAC,kBAAAC,QAAA,EAAAC,WAAA;EACA,MAAAD,QAAA,YAAAC,WAAA;IAAA,MAIK,IAAAC,SAAA;EA8GO;AAzGP;AAAiD,SAC9CC,kBAAAC,MAAA,EAAAC,KAAA;EACS,SAAAC,CAAA,MAAAA,CAAA,GAAAD,KAAA,CAAAE,MAAA,EAAAD,CAAA;IAEjB,IAAAE,UAAY,GAAAH,KAAiB,CAAAC,CAAA;IAC3BE,UAAK,CAAAC,UAAQ,GAAWD,UAAO,CAAIC,UAAC;IACpCD,UAAK,CAAAE,YAAY;IACnB,eAAAF,UAAA,EAAAA,UAAA,CAAAG,QAAA;IAEAC,MAAA,CAAAC,cAA+B,CAAAT,MAAA,EAAAI,UAAA,CAAAM,GAAA,EAAAN,UAAA;EAC7B;AACA;AAAe,SACjBO,cAAAd,WAAA,EAAAe,UAAA,EAAAC,WAAA;EAEA,IAAAD,UAAe,EAAAb,iBAAA,CAAAF,WAAA,CAAAiB,SAAA,EAAAF,UAAA;EACb,IAAAC,WAAS,EAAMd,iBAAa,CAAAF,WAAO,EAAAgB,WAAA;EACnC,OAAKhB,WAAU;AACf;AACA,SAAAkB,gBAAOA,CAAAC,GAAA,EAAAN,GAAA,EAAAO,KAAA;EACT,IAAAP,GAAA,IAAAM,GAAA;IAEAR,MAAA,CAAAC,cAAiC,CAAAO,GAAA,EAAAN,GAAA;MAC/BO,KAAM;MACNZ,UAAY,MAAM;MAClBC,YAAa,MAAK;MAClBC,QAAK;IACL;EACF;IAEAS,GAAA,CAAAN,GAAA,IAAAO,KAAkB;EAChB;EACA,OAAKD,GAAA;AAAU;AACjB,IAEAE,eAAA,kBAGE;EACA,YAAM;;EACN,SAAOC,iBAAAC,OAAA,EAAAC,SAAA;IAAA1B,iBACQ,KAAM,EAAAwB,gBAAS;IAAAJ,gBACjB,OACT,SAAS,KAAK;IAClBA,gBAAA;IACF,KAAAO,KAAA,GAAAF,OAAA,IACFA,OAAA,CAeA,GAAM;IACJ,KAAAC,SAAU,GAAAA,SAAA;EACV;EACAV,aAAS,CAAAQ,gBAAA,GACT;IACAT,GAAA,eAAU;IACZO,KAAA,WAAAM,YAAAC,GAAA;MAEO,IAAS,CAAAF,KAAA,CAAAG,IAAA,CAAAD,GAAkB;MAChC,KAAAH,SAAA;IACA;EACA,GACoC;IACpCX,GAAM;IACNO,KAAA,EAAW,SAAAS,GAAYA,CAAA;MAAoB,IAAQ,IAAG,CAAAJ,KAAO,CAAAnB,MAAA;MAAI,IAC/D,CAAAmB,KAAA,CAAAI,GAAA;MACF,KAAAL,SAAA;MAGM;IAEN;EACE,GACA;IACAX,GAAA,cAAe;IACfO,KAAM,WAAUU,WAAAH,GAAe;MAC3B,IAAAI,GAAA,GAAS,KAAAN,KAAA,CAAAO,WAAuB,CAAAL,GAAA;MACpC,IAAOI,GAAA,KAAM,MAAAA,GAAA,KAAe,KAAON,KAAA,CAAAnB,MAAA;MAChC,KAAAmB,KAAA,QAAAA,KAAA,CAAAQ,KAAA,IAAAF,GAAA;MAEC,KAAAP,SAAM;MAEZ,OACE;IAEI;EACA,GACA;IACGX,GAAA;IAAAO,KAAA,WAAAc,kBAAAC,IAAA;MAEC,KAAAV,KAAA,IACA,GAAAU,IAAA,CACA;MAEA,KAAAX,SAAA;IAEA;EAAA,GACF;IAGNX,GAAA;IAEJO,KAAA,WAAAgB,qBAAA","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","Suspense","useEffect","useRef","RouteTagContext","stackNavigator","useNavState","_class_call_check","instance","Constructor","TypeError","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_create_class","protoProps","staticProps","prototype","_define_property","obj","value","DomStackAdapter","DomStackAdapter2","rootTag","onChanged","stack","push_by_tag","tag","push","pop","pop_to_tag","idx","lastIndexOf","slice","replace_with_tags","tags","get_navigation_stack","snapshot","get_n_items","get_item","index","get_tag","_snapshot_index","PAGE_STYLE","position","flex","minHeight","display","flexDirection","overflow","useZeroHeightWarning","ref","process","env","NODE_ENV","el","current"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -40,17 +40,31 @@ class DomStackAdapter {
40
40
  }
41
41
  }
42
42
  const PAGE_STYLE = {
43
- position: "absolute",
44
- inset: 0,
43
+ position: "relative",
44
+ flex: "1 1 auto",
45
+ minHeight: 0,
45
46
  display: "flex",
46
47
  flexDirection: "column",
47
48
  overflow: "auto"
48
49
  };
50
+ function useZeroHeightWarning(ref) {
51
+ useEffect(() => {
52
+ if (process.env.NODE_ENV === "production") return;
53
+ const el = ref.current;
54
+ if (!el) return;
55
+ const raf = requestAnimationFrame(() => {
56
+ if (el.offsetParent === null || el.getBoundingClientRect().height > 0) return;
57
+ console.error("[stack nav] DomNavigationHost rendered 0px tall \u2014 every page is clipped and this surface paints nothing. Give the mount node a definite height (e.g. `#app { display: flex; flex-direction: column; min-height: 100vh }`) or pass `style={{ minHeight: \u2026 }}` to the host.");
58
+ });
59
+ return () => cancelAnimationFrame(raf);
60
+ }, [ref]);
61
+ }
49
62
  function DomNavigationHost({
50
63
  routes,
51
64
  initialHref,
52
65
  style
53
66
  }) {
67
+ const hostRef = useRef(null);
54
68
  const adapterRef = useRef(null);
55
69
  adapterRef.current ??= new DomStackAdapter(routes[0]?.tag ?? "", () => stackNavigator.syncFromHost());
56
70
  const initialHrefRef = useRef(initialHref);
@@ -62,10 +76,14 @@ function DomNavigationHost({
62
76
  if (restore) stackNavigator.replace(restore);
63
77
  return () => stackNavigator.detach();
64
78
  }, []);
79
+ useZeroHeightWarning(hostRef);
65
80
  const nav = useNavState();
66
81
  return /* @__PURE__ */jsx("div", {
82
+ ref: hostRef,
67
83
  style: {
68
84
  position: "relative",
85
+ display: "flex",
86
+ flexDirection: "column",
69
87
  flex: 1,
70
88
  minHeight: 0,
71
89
  height: "100%",
@@ -1 +1 @@
1
- {"version":3,"names":["Suspense","useEffect","useRef","RouteTagContext","stackNavigator","useNavState","jsx","DomStackAdapter","stack","onChanged","constructor","rootTag","push_by_tag","tag","push","pop","length","pop_to_tag","idx","lastIndexOf","slice","replace_with_tags","tags","get_navigation_stack","snapshot","get_n_items","get_item","index","get_tag","PAGE_STYLE","position","inset","display","flexDirection","overflow","DomNavigationHost","routes","initialHref","style","adapterRef","current","syncFromHost","initialHrefRef","adapter","attach","restore","replace","detach","nav","flex","minHeight","height","children","map","route","active","mounted","isVisited","Provider","value","fallback","element"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Suspense","useEffect","useRef","RouteTagContext","stackNavigator","useNavState","jsx","DomStackAdapter","stack","onChanged","constructor","rootTag","push_by_tag","tag","push","pop","length","pop_to_tag","idx","lastIndexOf","slice","replace_with_tags","tags","get_navigation_stack","snapshot","get_n_items","get_item","index","get_tag","PAGE_STYLE","position","flex","minHeight","display","flexDirection","overflow","useZeroHeightWarning","ref","process","env","NODE_ENV","el","current","raf","requestAnimationFrame","offsetParent","getBoundingClientRect","height","console","error","cancelAnimationFrame","DomNavigationHost","routes","initialHref","style","hostRef","adapterRef","syncFromHost","initialHrefRef","adapter","attach","restore","replace","detach","nav","children","map","route","active","mounted","isVisited","Provider","value","fallback","element"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -124,12 +124,27 @@ var DomStackAdapter = /* @__PURE__ */function () {
124
124
  return DomStackAdapter2;
125
125
  }();
126
126
  var PAGE_STYLE = {
127
- position: "absolute",
128
- inset: 0,
127
+ position: "relative",
128
+ flex: "1 1 auto",
129
+ minHeight: 0,
129
130
  display: "flex",
130
131
  flexDirection: "column",
131
132
  overflow: "auto"
132
133
  };
134
+ function useZeroHeightWarning(ref) {
135
+ (0, import_react.useEffect)(function () {
136
+ if (process.env.NODE_ENV === "production") return;
137
+ var el = ref.current;
138
+ if (!el) return;
139
+ var raf = requestAnimationFrame(function () {
140
+ if (el.offsetParent === null || el.getBoundingClientRect().height > 0) return;
141
+ console.error("[stack nav] DomNavigationHost rendered 0px tall \u2014 every page is clipped and this surface paints nothing. Give the mount node a definite height (e.g. `#app { display: flex; flex-direction: column; min-height: 100vh }`) or pass `style={{ minHeight: \u2026 }}` to the host.");
142
+ });
143
+ return function () {
144
+ return cancelAnimationFrame(raf);
145
+ };
146
+ }, [ref]);
147
+ }
133
148
  function DomNavigationHost(param) {
134
149
  var {
135
150
  routes,
@@ -138,6 +153,7 @@ function DomNavigationHost(param) {
138
153
  } = param;
139
154
  var _adapterRef, _current, _ref;
140
155
  var _routes_;
156
+ var hostRef = (0, import_react.useRef)(null);
141
157
  var adapterRef = (0, import_react.useRef)(null);
142
158
  (_current = (_adapterRef = adapterRef).current) !== null && _current !== void 0 ? _current : _adapterRef.current = new DomStackAdapter((_ref = (_routes_ = routes[0]) === null || _routes_ === void 0 ? void 0 : _routes_.tag) !== null && _ref !== void 0 ? _ref : "", function () {
143
159
  return import_navigator.stackNavigator.syncFromHost();
@@ -153,10 +169,14 @@ function DomNavigationHost(param) {
153
169
  return import_navigator.stackNavigator.detach();
154
170
  };
155
171
  }, []);
172
+ useZeroHeightWarning(hostRef);
156
173
  var nav = (0, import_navigator.useNavState)();
157
174
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)("div", {
175
+ ref: hostRef,
158
176
  style: {
159
177
  position: "relative",
178
+ display: "flex",
179
+ flexDirection: "column",
160
180
  flex: 1,
161
181
  minHeight: 0,
162
182
  height: "100%",
@@ -1 +1 @@
1
- {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","DomNavigationHost_exports","DomNavigationHost","DomStackAdapter","module","exports","import_jsx_runtime","require","import_react","import_navigator","_class_call_check","instance","Constructor","TypeError","_defineProperties","props","i","length","descriptor","configurable","writable","_create_class","protoProps","staticProps","_define_property","obj","DomStackAdapter2","rootTag","onChanged","stack","push_by_tag","tag","push","pop"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","DomNavigationHost_exports","DomNavigationHost","DomStackAdapter","module","exports","import_jsx_runtime","require","import_react","import_navigator","_class_call_check","instance","Constructor","TypeError","_defineProperties","props","i","length","descriptor","configurable","writable","_create_class","protoProps","staticProps","_define_property","obj","DomStackAdapter2","rootTag","onChanged","stack","push_by_tag","tag","push","pop","pop_to_tag","idx","lastIndexOf","slice","replace_with_tags","tags","get_navigation_stack","snapshot","get_n_items","get_item","index","get_tag"],"sources":["../../../src/seam/DomNavigationHost.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/router",
3
- "version": "6.4.3",
3
+ "version": "6.6.0",
4
4
  "description": "multiplatform.one router with support for react-router-dom and react-navigation",
5
5
  "keywords": [
6
6
  "react",
@@ -31,6 +31,7 @@
31
31
  "types": "types/index.d.ts",
32
32
  "exports": {
33
33
  "./package.json": "./package.json",
34
+ "./src/*": "./src/*",
34
35
  ".": {
35
36
  "react-native": {
36
37
  "types": "./types/index.d.ts",
@@ -61,7 +62,7 @@
61
62
  },
62
63
  "dependencies": {
63
64
  "@vxrn/color-scheme": "~1.16.5",
64
- "@multiplatform.one/platform": "6.4.3"
65
+ "@multiplatform.one/platform": "6.6.0"
65
66
  },
66
67
  "devDependencies": {
67
68
  "@react-navigation/native": "^7.2.2",
@@ -76,8 +77,8 @@
76
77
  "typescript": "~5.9.3",
77
78
  "vite": "^8.0.10",
78
79
  "vitest": "^4.1.5",
79
- "@multiplatform.one/config": "6.4.3",
80
- "@multiplatform.one/test-utils": "6.4.3"
80
+ "@multiplatform.one/config": "6.6.0",
81
+ "@multiplatform.one/test-utils": "6.6.0"
81
82
  },
82
83
  "peerDependencies": {
83
84
  "@react-navigation/native": "~7.2.2",
@@ -66,6 +66,48 @@ describe("DomNavigationHost", () => {
66
66
  expect(screen.getByTestId("detail-params").textContent).toBe("mew");
67
67
  });
68
68
 
69
+ // happy-dom performs no layout, so these assert the STRUCTURE that decides
70
+ // whether the host can be measured at all. An out-of-flow page contributes
71
+ // nothing to its container's intrinsic height, which is what collapsed the
72
+ // host to 0px under an unsized mount node and clipped every page away —
73
+ // with a fully populated DOM, so innerText and toBeVisible() both passed.
74
+ // Real painted heights are measured in a browser (see the seam probe).
75
+ it("keeps the active page in normal flow so an unsized parent still gets height", () => {
76
+ const { container } = renderHost();
77
+ const host = container.firstElementChild as HTMLElement;
78
+ const active = pageByTag(container, "home");
79
+
80
+ expect(active.style.position).toBe("relative");
81
+ expect(active.style.display).toBe("flex");
82
+ expect(active.style.flexGrow).toBe("1");
83
+ expect(active.style.flexBasis).toBe("auto");
84
+ // Fills a definite-height host, scrolls inside it rather than growing it.
85
+ expect(active.style.minHeight).toBe("0");
86
+ expect(active.style.overflow).toBe("auto");
87
+ // ...and the host is the column flex container the page fills.
88
+ expect(host.style.display).toBe("flex");
89
+ expect(host.style.flexDirection).toBe("column");
90
+ });
91
+
92
+ it("takes backgrounded pages out of layout entirely", () => {
93
+ const { container } = renderHost();
94
+ act(() => stackNavigator.push("/todos"));
95
+ expect(pageByTag(container, "home").style.display).toBe("none");
96
+ expect(pageByTag(container, "todos").style.display).toBe("flex");
97
+ });
98
+
99
+ it("lets the caller override sizing through style", () => {
100
+ stackNavigator.detach();
101
+ stackNavigator.configure(ROUTES);
102
+ const { container } = render(
103
+ <DomNavigationHost
104
+ style={{ minHeight: 480 }}
105
+ routes={[{ ...ROUTES[0]!, element: <div data-testid="home-screen" /> }]}
106
+ />,
107
+ );
108
+ expect((container.firstElementChild as HTMLElement).style.minHeight).toBe("480px");
109
+ });
110
+
69
111
  it("restores an initial route as a root replace", () => {
70
112
  const { container } = renderHost("/todos");
71
113
  expect(pageByTag(container, "todos").dataset.seamActive).toBe("true");
@@ -20,6 +20,10 @@
20
20
  // Stack state flows host → seam: every adapter mutation calls
21
21
  // stackNavigator.syncFromHost(), exactly like the GTK pushed/popped/
22
22
  // replaced signal handlers.
23
+ //
24
+ // Sizing needs no ceremony: the host fills a parent with a definite height
25
+ // and otherwise sizes to the active page (`style` overrides either way).
26
+ // See the contract above PAGE_STYLE.
23
27
 
24
28
  import type { CSSProperties, ReactNode } from "react";
25
29
  import { Suspense, useEffect, useRef } from "react";
@@ -95,19 +99,61 @@ export interface DomNavigationHostProps {
95
99
  style?: CSSProperties;
96
100
  }
97
101
 
102
+ // Sizing contract — the host fills a definite-height parent and falls back
103
+ // to its content's height when the parent is indefinite.
104
+ //
105
+ // The active page is a NORMAL-FLOW flex child, not `position: absolute;
106
+ // inset: 0`. Out-of-flow pages contribute nothing to the container's
107
+ // intrinsic height, so a host under an unsized mount node (a webext popup's
108
+ // `#app`, say) collapsed to 0 and clipped every page away — a fully
109
+ // populated DOM painting zero pixels, which neither innerText assertions nor
110
+ // Playwright's toBeVisible() can see. In flow, `height: 100%` degrades to
111
+ // `auto` and the container sizes to the page instead of to nothing.
112
+ //
113
+ // Only the top-of-stack page is displayed, so nothing needs to overlay:
114
+ // backgrounded pages are `display: none` and leave layout entirely.
115
+ // `position: relative` stays so screens keep the page as their containing
116
+ // block, and `minHeight: 0` + `overflow: auto` keep a too-tall page
117
+ // scrolling INSIDE a definite-height host rather than growing it.
98
118
  const PAGE_STYLE: CSSProperties = {
99
- position: "absolute",
100
- inset: 0,
119
+ position: "relative",
120
+ flex: "1 1 auto",
121
+ minHeight: 0,
101
122
  display: "flex",
102
123
  flexDirection: "column",
103
124
  overflow: "auto",
104
125
  };
105
126
 
127
+ /** Dev-only: a host that measures 0px tall paints nothing, however healthy
128
+ * its DOM looks. Say so instead of shipping a blank surface. */
129
+ function useZeroHeightWarning(ref: { current: HTMLDivElement | null }): void {
130
+ useEffect(() => {
131
+ if (process.env.NODE_ENV === "production") return;
132
+ const el = ref.current;
133
+ if (!el) return;
134
+ // A frame late: parents that size themselves in their own effect (or on
135
+ // font load) have landed by then.
136
+ const raf = requestAnimationFrame(() => {
137
+ // offsetParent === null ⇒ legitimately hidden (collapsed panel, an
138
+ // ancestor with display:none), not a sizing bug.
139
+ if (el.offsetParent === null || el.getBoundingClientRect().height > 0) return;
140
+ console.error(
141
+ "[stack nav] DomNavigationHost rendered 0px tall — every page is clipped and " +
142
+ "this surface paints nothing. Give the mount node a definite height (e.g. " +
143
+ "`#app { display: flex; flex-direction: column; min-height: 100vh }`) or pass " +
144
+ "`style={{ minHeight: … }}` to the host.",
145
+ );
146
+ });
147
+ return () => cancelAnimationFrame(raf);
148
+ }, [ref]);
149
+ }
150
+
106
151
  export function DomNavigationHost({
107
152
  routes,
108
153
  initialHref,
109
154
  style,
110
155
  }: DomNavigationHostProps): ReactNode {
156
+ const hostRef = useRef<HTMLDivElement>(null);
111
157
  const adapterRef = useRef<DomStackAdapter | null>(null);
112
158
  adapterRef.current ??= new DomStackAdapter(routes[0]?.tag ?? "", () =>
113
159
  stackNavigator.syncFromHost(),
@@ -125,10 +171,23 @@ export function DomNavigationHost({
125
171
  return () => stackNavigator.detach();
126
172
  }, []);
127
173
 
174
+ useZeroHeightWarning(hostRef);
175
+
128
176
  const nav = useNavState();
129
177
 
130
178
  return (
131
- <div style={{ position: "relative", flex: 1, minHeight: 0, height: "100%", ...style }}>
179
+ <div
180
+ ref={hostRef}
181
+ style={{
182
+ position: "relative",
183
+ display: "flex",
184
+ flexDirection: "column",
185
+ flex: 1,
186
+ minHeight: 0,
187
+ height: "100%",
188
+ ...style,
189
+ }}
190
+ >
132
191
  {routes.map((route) => {
133
192
  const active = nav.tag === route.tag;
134
193
  const mounted = stackNavigator.isVisited(route.tag);
@@ -1 +1 @@
1
- {"version":3,"file":"DomNavigationHost.d.ts","sourceRoot":"","sources":["../../src/seam/DomNavigationHost.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AAErB;;qBAEqB;AACrB,qBAAa,eAAgB,YAAW,eAAe;IACrD,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;gBAE3B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI;IAKlD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK9B,GAAG,IAAI,OAAO;IAOd,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQhC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAKvC,oBAAoB,IAAI;QACtB,WAAW,IAAI,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG;YAAE,OAAO,IAAI,MAAM,GAAG,IAAI,CAAA;SAAE,GAAG,IAAI,CAAC;KAC9D;CAQF;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB;;2CAEuC;IACvC,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAUD,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,WAAW,EACX,KAAK,GACN,EAAE,sBAAsB,GAAG,SAAS,CAwCpC"}
1
+ {"version":3,"file":"DomNavigationHost.d.ts","sourceRoot":"","sources":["../../src/seam/DomNavigationHost.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAIL,KAAK,IAAI,EACT,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,aAAa,CAAC;AAErB;;qBAEqB;AACrB,qBAAa,eAAgB,YAAW,eAAe;IACrD,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;gBAE3B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI;IAKlD,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK9B,GAAG,IAAI,OAAO;IAOd,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQhC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI;IAKvC,oBAAoB,IAAI;QACtB,WAAW,IAAI,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG;YAAE,OAAO,IAAI,MAAM,GAAG,IAAI,CAAA;SAAE,GAAG,IAAI,CAAC;KAC9D;CAQF;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB;;2CAEuC;IACvC,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAmDD,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,WAAW,EACX,KAAK,GACN,EAAE,sBAAsB,GAAG,SAAS,CAsDpC"}