@multiplatform.one/router 6.4.2 → 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.
- package/dist/cjs/seam/DomNavigationHost.cjs +20 -2
- package/dist/cjs/seam/DomNavigationHost.native.js +22 -2
- package/dist/cjs/seam/DomNavigationHost.native.js.map +1 -1
- package/dist/esm/hooks/useUrlState.mjs.map +1 -1
- package/dist/esm/hooks/useUrlState.native.js.map +1 -1
- package/dist/esm/seam/DomNavigationHost.mjs +20 -2
- package/dist/esm/seam/DomNavigationHost.mjs.map +1 -1
- package/dist/esm/seam/DomNavigationHost.native.js +22 -2
- package/dist/esm/seam/DomNavigationHost.native.js.map +1 -1
- package/dist/jsx/hooks/useUrlState.mjs.map +1 -1
- package/dist/jsx/seam/DomNavigationHost.mjs +20 -2
- package/dist/jsx/seam/DomNavigationHost.mjs.map +1 -1
- package/dist/jsx/seam/DomNavigationHost.native.js +22 -2
- package/dist/jsx/seam/DomNavigationHost.native.js.map +1 -1
- package/package.json +6 -5
- package/src/seam/DomNavigationHost.spec.tsx +42 -0
- package/src/seam/DomNavigationHost.tsx +62 -3
- package/types/seam/DomNavigationHost.d.ts.map +1 -1
|
@@ -68,17 +68,31 @@ class DomStackAdapter {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
const PAGE_STYLE = {
|
|
71
|
-
position: "
|
|
72
|
-
|
|
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: "
|
|
128
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,yBAAA;AAAAC,QAAA,CAAAD,yBAAA;EAAAE,iBAAA,EAAAA,CAAA,KAAAA,iBAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAA;AAAA;
|
|
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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","isWeb","useParams","useRouter","hasRouter","emptyParams","useOptionalRouter","router","params","useSearchParams","localParams","setLocalParams","currentParams","debounceTimerRef","searchParams","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","isWeb","useParams","useRouter","hasRouter","emptyParams","useOptionalRouter","router","params","useSearchParams","localParams","setLocalParams","currentParams","debounceTimerRef","searchParams","Object","entries","forEach","key","value","setSearchParams","newParams","options","replace","_replace","debounceMs","updateParams","updatedParams","cleanParams","setParams","current","clearTimeout","setTimeout","useUrlState","defaultValues","serialize","val","Array","isArray","map","String","JSON","stringify","deserialize","result","defaultValue","Number","parse","keys","currentState","setState","newState","updatedState","mergedState","serialized","useShareableUrl","shareableUrl","window","url","URL","location","href","search","v","append","set","toString","useTypedSearchParams","schema","typedParams","config","rawValue","default"],"sources":["../../../src/hooks/useUrlState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","isWeb","useParams","useRouter","_type_of","obj","Symbol","constructor","hasRouter","emptyParams","useOptionalRouter","router","params","unused","useSearchParams","localParams","setLocalParams","currentParams","debounceTimerRef","searchParams","params2","Object","entries","forEach","param","key","value","setSearchParams","newParams","options","arguments","length","replace","_replace","debounceMs","updateParams","updateParams2","updatedParams","cleanParams","setParams","current","clearTimeout","setTimeout","useUrlState","defaultValues","serialize","val","Array","isArray","map","String","JSON","stringify","deserialize","result","defaultValue","Number","parse","keys","currentState","setState","newState","updatedState","mergedState","serialized","useShareableUrl","_useOptionalRouter_params","shareableUrl","window","url","URL","location","href","search"],"sources":["../../../src/hooks/useUrlState.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,EAAaC,SAAA,EAAWC,OAAA,EAASC,MAAA,EAAQC,QAAA,QAAgB;AAClE,SAASC,KAAA,QAAa;AACtB,SAASC,SAAA,EAAWC,SAAA,QAAiB;AAYrC,SAAMC,SAAYC,GAAA;EAElB,uBAAmC;;EAOnC,OAASA,GAAA,WAAAC,MAAoC,oBAAAD,GAAA,CAAAE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AAC3C;AACA,IAAAG,SAAI,UAAAL,SAAA,0BAAAD,SAAA;AACF,IAAAO,WAAS;AAAyD,SACpEC,iBAAQA,CAAA;EACN,KAAAF,SAAQ;EACV;IACF;MAMOG,MAAS,EAAAR,SAAA;MAOdS,MAAO,EAAAV,SAAa;IACpB;EACA,SAAMW,MAAA;IACN,OAAM;EAGN;AACE;AACA,SAAAC,eAAeA,CAAA;EACb,KAAAC,WAAI,EAAUC,cAAa,IAAAhB,QAAgB;EACzC;
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","isWeb","useParams","useRouter","_type_of","obj","Symbol","constructor","hasRouter","emptyParams","useOptionalRouter","router","params","unused","useSearchParams","localParams","setLocalParams","currentParams","debounceTimerRef","searchParams","params2","Object","entries","forEach","param","key","value","setSearchParams","newParams","options","arguments","length","replace","_replace","debounceMs","updateParams","updateParams2","updatedParams","cleanParams","setParams","current","clearTimeout","setTimeout","useUrlState","defaultValues","serialize","val","Array","isArray","map","String","JSON","stringify","deserialize","result","defaultValue","Number","parse","keys","currentState","setState","newState","updatedState","mergedState","serialized","useShareableUrl","_useOptionalRouter_params","shareableUrl","window","url","URL","location","href","search"],"sources":["../../../src/hooks/useUrlState.ts"],"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: "
|
|
44
|
-
|
|
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","
|
|
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":[]}
|
|
@@ -94,12 +94,27 @@ var DomStackAdapter = /* @__PURE__ */function () {
|
|
|
94
94
|
return DomStackAdapter2;
|
|
95
95
|
}();
|
|
96
96
|
var PAGE_STYLE = {
|
|
97
|
-
position: "
|
|
98
|
-
|
|
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":"
|
|
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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","isWeb","useParams","useRouter","hasRouter","emptyParams","useOptionalRouter","router","params","useSearchParams","localParams","setLocalParams","currentParams","debounceTimerRef","searchParams","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","isWeb","useParams","useRouter","hasRouter","emptyParams","useOptionalRouter","router","params","useSearchParams","localParams","setLocalParams","currentParams","debounceTimerRef","searchParams","Object","entries","forEach","key","value","setSearchParams","newParams","options","replace","_replace","debounceMs","updateParams","updatedParams","cleanParams","setParams","current","clearTimeout","setTimeout","useUrlState","defaultValues","serialize","val","Array","isArray","map","String","JSON","stringify","deserialize","result","defaultValue","Number","parse","keys","currentState","setState","newState","updatedState","mergedState","serialized","useShareableUrl","shareableUrl","window","url","URL","location","href","search","v","append","set","toString","useTypedSearchParams","schema","typedParams","config","rawValue","default"],"sources":["../../../src/hooks/useUrlState.ts"],"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: "
|
|
44
|
-
|
|
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","
|
|
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: "
|
|
128
|
-
|
|
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":"
|
|
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":"AA4BA,YAAS;;AACT,IAAAA,SAAA,GAAAC,MAAA,CAAAC,cAAA;AAAA,IACEC,gBAAA,GAAAF,MAAA,CAAAG,wBAAA;AAAA,IACAC,iBAAA,GAAAJ,MAAA,CAAAK,mBAAA;AAAA,IACAC,YAAA,GAAAN,MAAA,CAAAO,SAAA,CAAAC,cAAA;AAAA,IAAAC,QAIK,GAAAA,CAAAC,MAAA,EAAAC,GAAA;EAqKO,SAAAC,IAAA,IAAAD,GAAA,EAhKPZ,SAAM,CAAAW,MAAA,EAA2CE,IAAA;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AAAA;AAC9C,IACSC,WAAA,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA;EAEjB,IAAAF,IAAA,IAAY,OAAAA,IAAiB,aAAuB,WAAAA,IAAA;IAClD,KAAK,IAAAG,GAAA,IAAQhB,iBAAkB,CAAAa,IAAK,GACpC,IAAK,CAAAX,YAAY,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAA,KAAAA,GAAA,KAAAF,MAAA,EACnBnB,SAAA,CAAAiB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EAEA;EACE,OAAKE,EAAA;AACL;AAAe,IACjBM,YAAA,GAAAC,GAAA,IAAAR,WAAA,CAAAhB,SAAA;EAAAyB,KAAA;AAAA,IAAAD,GAAA;AAAA,IAEAE,yBAAe;AACbhB,QAAI,CAAAgB,yBAAwB;EAC5BC,iBAAe,EAAAA,CAAA,KAAAA,iBAAA;EACfC,eAAK,EAAUA,CAAA,KAAAA;AACf;AAAOC,MACT,CAAAC,OAAA,GAAAP,YAAA,CAAAG,yBAAA;AAAA,IAEAK,kBAAiC,GAAAC,OAAA;AAC/B,IAAAC,YAAY,GAAAD,OAAK,CAAM;AACvB,IAAAE,gBAAY,GAAMF,OAAQ,wBAAW;AACrC,SAAKG,iBAAaA,CAAAC,QAAY,EAAGC,WAAO;EACxC,MAAAD,QAAK,YAAUC,WAAA;IACf,UAAOC,SAAA;EACT;AAAA;AAGE,SAAKC,iBAAgBA,CAAA5B,MAAA,EAAA6B,KAAA;EACrB,SAAKC,CAAA,MAAAA,CAAU,GAAAD,KAAA,CAAAE,MAAA,EAAAD,CAAA;IACjB,IAAAE,UAAA,GAAAH,KAAA,CAAAC,CAAA;IAEAE,UAAA,CAAA5B,UAGE,GAAA4B,UAAA,CAAA5B,UAAA;IACA4B,UAAM,CAAAC,YAAgB;IACtB,WAAO,IAAAD,UAAA,EAAAA,UAAA,CAAAE,QAAA;IAAA5C,MACL,CAAAC,cAAmB,CAAAS,MAAA,EAASgC,UAAA,CAAAtB,GAAA,EAAAsB,UAAA;EAAA;AAE2D;AACzF,SACFG,cAAAT,WAAA,EAAAU,UAAA,EAAAC,WAAA;EACF,IAAAD,UAAA,EAAAR,iBAAA,CAAAF,WAAA,CAAA7B,SAAA,EAAAuC,UAAA;EA+BA,IAAMC,WAAA,EAA4BT,iBAAA,CAAAF,WAAA,EAAAW,WAAA;EAChC,OAAAX,WAAU;AAAA;AACJ,SACNY,gBAAWA,CAAAC,GAAA,EAAA7B,GAAA,EAAAI,KAAA;EACX,IAAAJ,GAAA,IAAS6B,GAAA;IACTjD,MAAA,CAAAC,cAAe,CAAAgD,GAAA,EAAA7B,GAAA;MACfI,KAAA;MACFV,UAAA;MAIA6B,YAAS;MACPC,QAAU;IACR;EACA;IACAK,GAAA,CAAI7B,GAAC,CAAI,GAAAI,KAAA;EAGT;EAGE,OAAAyB,GAAI;AACJ;AAAQ,IAAAtB,eACN;EAAA,YAIF;;EAAA,SACDuB,iBAAAC,OAAA,EAAAC,SAAA;IACDlB,iBAAa,OAAAgB,gBAAwB;IACvCF,gBAAQ;IACVA,gBAAA;IAEO,KAASK,KAAA,GAAAF,OAAA,GAAkB,CAChCA,OAAA,CACA;IACA,KAAAC,SAAA,GAAAA,SAAA;EACF;EACEP,aAAM,CAAAK,gBAAqC,GAC3C;IACA9B,GAAA,eAAW;IAAgCI,KAAO,EAAC,SAAU8B,YAAAC,GAAA;MAAI,IAC/D,CAAAF,KAAA,CAAAG,IAAA,CAAAD,GAAe;MACjB,KAAAH,SAAA;IAGA;EAEA,GACE;IACAhC,GAAK;IACLI,KAAA,WAAeiC,IAAA,EAAO;MACtB,IAAM,KAAAJ,KAAU,CAAAZ,MAAA,OAAe;MAC3B,KAAAY,KAAS,CAAAI,GAAA;MACb,IAAO,CAAAL,SAAM;MACV;IAEL;EAEA,GAEA;IACGhC,GAAA;IAAAI,KAAA,WAAAkC,WAAAH,GAAA;MACC,IAAKI,GAAA,QAAAN,KAAA,CAAAO,WAAA,CAAAL,GAAA;MACL,IAAAI,GAAO,WAAAA,GAAA,UAAAN,KAAA,CAAAZ,MAAA;MACL,KAAAY,KAAU,QAAAA,KAAA,CAAAQ,KAAA,IAAAF,GAAA;MACV,KAAAP,SAAS;MACT;IAAe;EACT,GACK;IACHhC,GACR,EAAG;IACLI,KAAA,WAAAsC,kBAAAC,IAAA;MAEC,KAAAV,KAAA,IACC,GAAAU,IAAM,CACN;MACA,KAAAX,SACE;IAAA;EAAC;IAEuBhC,GAAA,wBACJ;IAAkBI,KAAA,EACpC,SAASwC,oBAAeA,CAAA,EAAS;MAAyB,IAE1DC,QAAA,QAAAZ,KAAA;MAEA;QAPKa,WAAM,WAAAA,YAAA;UAQb,OAAAD,QAAA,CAAAxB,MAAA;QAEH;QAAA0B,QAAA,WAAAA,SAAAC,KAAA;UACH,OAAAA,KAAA,SAAAA,KAAA,GAAAH,QAAA,CAAAxB,MAAA;YAEJ4B,OAAA,WAAAA,QAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplatform.one/router",
|
|
3
|
-
"version": "6.
|
|
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",
|
|
@@ -60,8 +61,8 @@
|
|
|
60
61
|
"access": "public"
|
|
61
62
|
},
|
|
62
63
|
"dependencies": {
|
|
63
|
-
"@vxrn/color-scheme": "
|
|
64
|
-
"@multiplatform.one/platform": "6.
|
|
64
|
+
"@vxrn/color-scheme": "~1.16.5",
|
|
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.
|
|
80
|
-
"@multiplatform.one/test-utils": "6.
|
|
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: "
|
|
100
|
-
|
|
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
|
|
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":"
|
|
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"}
|