@multiplatform.one/router 6.4.3 → 6.7.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/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/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":[]}
|
|
@@ -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":[]}
|
|
@@ -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.7.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.
|
|
65
|
+
"@multiplatform.one/platform": "6.7.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/
|
|
80
|
-
"@multiplatform.one/
|
|
80
|
+
"@multiplatform.one/test-utils": "6.7.0",
|
|
81
|
+
"@multiplatform.one/config": "6.7.0"
|
|
81
82
|
},
|
|
82
83
|
"peerDependencies": {
|
|
83
84
|
"@react-navigation/native": "~7.2.2",
|
|
@@ -92,6 +93,6 @@
|
|
|
92
93
|
"scripts": {
|
|
93
94
|
"build": "rm -rf dist types 2>/dev/null && tamagui-build --ts-project ./tsconfig.build.json --exclude '\\.spec\\.|\\.test\\.|\\.stories\\.'",
|
|
94
95
|
"test": "vitest run --coverage --coverage.provider=v8 --coverage.reporter=text --coverage.reporter=lcov --coverage.reporter=html",
|
|
95
|
-
"typecheck": "
|
|
96
|
+
"typecheck": "tsgo --noEmit"
|
|
96
97
|
}
|
|
97
98
|
}
|
|
@@ -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"}
|