@codeleap/web-navigation 7.0.1 → 7.1.1
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/navigation.js +38 -42
- package/dist/navigation.js.map +1 -1
- package/package.json +1 -1
package/dist/navigation.js
CHANGED
|
@@ -17,27 +17,31 @@ const defaultConfig = {
|
|
|
17
17
|
* when running outside a browser environment.
|
|
18
18
|
*/
|
|
19
19
|
export class Navigation {
|
|
20
|
+
_history = {};
|
|
21
|
+
config = defaultConfig;
|
|
20
22
|
get history() {
|
|
21
23
|
return this._history;
|
|
22
24
|
}
|
|
25
|
+
context = {};
|
|
23
26
|
putHistory(path, info = {}) {
|
|
24
|
-
var _a, _b, _c;
|
|
25
27
|
const idx = Object.keys(this._history).length + 1;
|
|
26
|
-
const origin = IS_SSR ? null :
|
|
28
|
+
const origin = IS_SSR ? null : window?.location?.origin;
|
|
27
29
|
const value = {
|
|
28
30
|
[idx]: {
|
|
29
31
|
origin,
|
|
30
32
|
date: new Date(),
|
|
31
33
|
path,
|
|
32
|
-
metadata:
|
|
34
|
+
metadata: this.config?.getMetadata?.(),
|
|
33
35
|
info,
|
|
34
36
|
},
|
|
35
37
|
};
|
|
36
38
|
this._history = this.merge(this._history, value);
|
|
37
39
|
}
|
|
38
40
|
merge(obj, addObj) {
|
|
39
|
-
return deepmerge({ all: true })(obj
|
|
41
|
+
return deepmerge({ all: true })(obj ?? {}, addObj ?? {});
|
|
40
42
|
}
|
|
43
|
+
navigator = null;
|
|
44
|
+
routes = {};
|
|
41
45
|
/**
|
|
42
46
|
* @param routes Nested object whose leaf values are path strings with optional
|
|
43
47
|
* `{{param}}` placeholders. Dot-notation keys derived from this object become
|
|
@@ -48,11 +52,6 @@ export class Navigation {
|
|
|
48
52
|
* configs are safe.
|
|
49
53
|
*/
|
|
50
54
|
constructor(routes, navigator, config = {}) {
|
|
51
|
-
this._history = {};
|
|
52
|
-
this.config = defaultConfig;
|
|
53
|
-
this.context = {};
|
|
54
|
-
this.navigator = null;
|
|
55
|
-
this.routes = {};
|
|
56
55
|
this.navigator = navigator;
|
|
57
56
|
this.routes = routes;
|
|
58
57
|
this.config = this.merge(this.config, config);
|
|
@@ -67,23 +66,22 @@ export class Navigation {
|
|
|
67
66
|
isCurrentRoute(route,
|
|
68
67
|
// @ts-expect-error
|
|
69
68
|
routeParams = {}, exact = false) {
|
|
70
|
-
var _a;
|
|
71
69
|
if (IS_SSR)
|
|
72
70
|
return false;
|
|
73
|
-
let path =
|
|
71
|
+
let path = window?.location?.pathname;
|
|
74
72
|
// @ts-ignore
|
|
75
73
|
const routePath = this.getPathWithParams(route, routeParams);
|
|
76
74
|
const isRootPath = routePath === '/';
|
|
77
75
|
if (isRootPath) {
|
|
78
76
|
const { pathname, origin, href } = window.location || {};
|
|
79
|
-
path = href
|
|
80
|
-
path = path
|
|
77
|
+
path = href?.replace(path, '');
|
|
78
|
+
path = path?.replace(origin, '');
|
|
81
79
|
return !path || pathname == routePath;
|
|
82
80
|
}
|
|
83
81
|
if (exact) {
|
|
84
|
-
return path
|
|
82
|
+
return path?.endsWith(routePath);
|
|
85
83
|
}
|
|
86
|
-
if (path
|
|
84
|
+
if (path?.includes(routePath)) {
|
|
87
85
|
return true;
|
|
88
86
|
}
|
|
89
87
|
return false;
|
|
@@ -94,21 +92,20 @@ export class Navigation {
|
|
|
94
92
|
* @returns Path - string
|
|
95
93
|
*/
|
|
96
94
|
getPath(route) {
|
|
97
|
-
var _a, _b;
|
|
98
95
|
let path = this.routes;
|
|
99
96
|
// @ts-ignore
|
|
100
|
-
if (route
|
|
97
|
+
if (route?.includes('.')) {
|
|
101
98
|
// @ts-ignore
|
|
102
|
-
const indexesAccess = route
|
|
99
|
+
const indexesAccess = route?.split('.');
|
|
103
100
|
for (const index of indexesAccess) {
|
|
104
|
-
path = path
|
|
101
|
+
path = path?.[index];
|
|
105
102
|
}
|
|
106
103
|
}
|
|
107
104
|
else {
|
|
108
105
|
// @ts-ignore
|
|
109
|
-
path = path
|
|
106
|
+
path = path?.[route];
|
|
110
107
|
}
|
|
111
|
-
return
|
|
108
|
+
return String(path)?.trim?.();
|
|
112
109
|
}
|
|
113
110
|
/**
|
|
114
111
|
* Get the path from the route and route params
|
|
@@ -121,41 +118,40 @@ export class Navigation {
|
|
|
121
118
|
routeParams = {}) {
|
|
122
119
|
let path = this.getPath(route);
|
|
123
120
|
for (const key in routeParams) {
|
|
124
|
-
const value = String(routeParams
|
|
121
|
+
const value = String(routeParams?.[key]);
|
|
125
122
|
const searchPartial = `{{${key}}}`;
|
|
126
|
-
if (path
|
|
127
|
-
path = path
|
|
123
|
+
if (path?.includes(searchPartial)) {
|
|
124
|
+
path = path?.replace(searchPartial, encodeURIComponent(value));
|
|
128
125
|
}
|
|
129
126
|
}
|
|
130
|
-
if (!
|
|
127
|
+
if (!path?.startsWith('/')) {
|
|
131
128
|
path = '/' + path;
|
|
132
129
|
}
|
|
133
|
-
if (!
|
|
130
|
+
if (!path?.endsWith('/')) {
|
|
134
131
|
path = path + '/';
|
|
135
132
|
}
|
|
136
|
-
return path
|
|
133
|
+
return path?.trim();
|
|
137
134
|
}
|
|
138
135
|
/**
|
|
139
136
|
* Function to navigate to the previous page, if history is enabled, the penultimate record will be used,
|
|
140
137
|
* otherwise the browser's own api with "history.back()"
|
|
141
138
|
*/
|
|
142
139
|
goBack() {
|
|
143
|
-
var _a, _b, _c, _d;
|
|
144
140
|
if (IS_SSR)
|
|
145
141
|
return;
|
|
146
142
|
if (!this.config.historyEnabled) {
|
|
147
|
-
|
|
143
|
+
history?.back?.();
|
|
148
144
|
return;
|
|
149
145
|
}
|
|
150
|
-
const lastIdx =
|
|
146
|
+
const lastIdx = Object.keys(this.history)?.length;
|
|
151
147
|
const historyData = this.history[lastIdx - 1];
|
|
152
148
|
if (!historyData) {
|
|
153
149
|
throw new Error('Not find back route');
|
|
154
150
|
}
|
|
155
|
-
const info = this.merge(historyData
|
|
151
|
+
const info = this.merge(historyData?.info, {
|
|
156
152
|
'action': 'goBack',
|
|
157
153
|
});
|
|
158
|
-
this.to(historyData
|
|
154
|
+
this.to(historyData?.path, historyData?.info?.options ?? {}, info);
|
|
159
155
|
}
|
|
160
156
|
/**
|
|
161
157
|
* Main function to navigate between the app using the route system with dynamic parameters
|
|
@@ -172,10 +168,10 @@ export class Navigation {
|
|
|
172
168
|
let routeParams = {};
|
|
173
169
|
const queryParamsKey = 'params';
|
|
174
170
|
for (const key in options) {
|
|
175
|
-
const value = options
|
|
171
|
+
const value = options?.[key];
|
|
176
172
|
const searchPartial = `{{${key}}}`;
|
|
177
|
-
if (path
|
|
178
|
-
path = path
|
|
173
|
+
if (path?.includes(searchPartial)) {
|
|
174
|
+
path = path?.replace(searchPartial, encodeURIComponent(String(value)));
|
|
179
175
|
routeParams = this.merge(routeParams, { [key]: String(value) });
|
|
180
176
|
}
|
|
181
177
|
else if (key == queryParamsKey) {
|
|
@@ -185,28 +181,28 @@ export class Navigation {
|
|
|
185
181
|
_options = this.merge(_options, { [key]: value });
|
|
186
182
|
}
|
|
187
183
|
}
|
|
188
|
-
if (!
|
|
184
|
+
if (!path?.startsWith('/')) {
|
|
189
185
|
path = '/' + path;
|
|
190
186
|
}
|
|
191
187
|
if (typeof params === 'object') {
|
|
192
188
|
let searchParams = null;
|
|
193
|
-
for (const paramKey in (params
|
|
194
|
-
const value = params
|
|
189
|
+
for (const paramKey in (params ?? {})) {
|
|
190
|
+
const value = params?.[paramKey];
|
|
195
191
|
const param = `${paramKey}=${encodeURIComponent(value)}`;
|
|
196
192
|
const separator = searchParams == null ? '' : '&';
|
|
197
|
-
searchParams = `${searchParams
|
|
193
|
+
searchParams = `${searchParams ?? ''}${separator}${param}`;
|
|
198
194
|
}
|
|
199
195
|
if (typeof searchParams === 'string') {
|
|
200
|
-
if (path
|
|
196
|
+
if (path?.endsWith('/')) {
|
|
201
197
|
path = path.slice(0, -1);
|
|
202
198
|
}
|
|
203
199
|
path = `${path}?${searchParams}`;
|
|
204
200
|
}
|
|
205
201
|
}
|
|
206
|
-
if (!
|
|
202
|
+
if (!path?.endsWith('/') && !params) {
|
|
207
203
|
path = path + '/';
|
|
208
204
|
}
|
|
209
|
-
this.to(path
|
|
205
|
+
this.to(path?.trim(), _options, {
|
|
210
206
|
params,
|
|
211
207
|
routeParams,
|
|
212
208
|
});
|
package/dist/navigation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAE1C,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,CAAA;AAE9E,MAAM,aAAa,GAAoB;IACrC,cAAc,EAAE,KAAK;IACrB,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC;CACvB,CAAA;AAOD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.tsx"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAE1C,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,CAAA;AAE9E,MAAM,aAAa,GAAoB;IACrC,cAAc,EAAE,KAAK;IACrB,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC;CACvB,CAAA;AAOD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,UAAU;IACb,QAAQ,GAAY,EAAE,CAAA;IAEtB,MAAM,GAAW,aAAa,CAAA;IAEtC,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEM,OAAO,GAAM,EAAO,CAAA;IAEnB,UAAU,CAAC,IAAe,EAAE,OAAY,EAAE;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;QAEjD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAA;QAEvD,MAAM,KAAK,GAAG;YACZ,CAAC,GAAG,CAAC,EAAE;gBACL,MAAM;gBACN,IAAI,EAAE,IAAI,IAAI,EAAE;gBAChB,IAAI;gBACJ,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;gBACtC,IAAI;aACL;SACoB,CAAA;QAEvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC;IAEO,KAAK,CAAC,GAAW,EAAE,MAAgB;QACzC,OAAO,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAC7B,GAAG,IAAI,EAAE,EACT,MAAM,IAAI,EAAE,CACb,CAAA;IACH,CAAC;IAEO,SAAS,GAAiB,IAA+B,CAAA;IAEzD,MAAM,GAAM,EAAO,CAAA;IAE3B;;;;;;;;OAQG;IACH,YACE,MAAS,EACT,SAA0B,EAC1B,SAAiB,EAAE;QAEnB,IAAI,CAAC,SAAS,GAAG,SAAoC,CAAA;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED;;;;;;OAMG;IACI,cAAc,CACnB,KAAQ;IACR,mBAAmB;IACnB,cAAqD,EAAS,EAC9D,KAAK,GAAG,KAAK;QAEb,IAAI,MAAM;YAAE,OAAO,KAAK,CAAA;QAExB,IAAI,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAA;QAErC,aAAa;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QAE5D,MAAM,UAAU,GAAG,SAAS,KAAK,GAAG,CAAA;QAEpC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAA;YAExD,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YAC9B,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAEhC,OAAO,CAAC,IAAI,IAAI,QAAQ,IAAI,SAAS,CAAA;QACvC,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClC,CAAC;QAED,IAAI,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;OAIG;IACI,OAAO,CAAC,KAAsB;QACnC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAA;QAEtB,aAAa;QACb,IAAI,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,aAAa;YACb,MAAM,aAAa,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;YAEvC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBAClC,IAAI,GAAI,IAA4B,EAAE,CAAC,KAAK,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,aAAa;YACb,IAAI,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAA;IAC/B,CAAC;IAED;;;;;OAKG;IACI,iBAAiB,CACtB,KAAQ;IACR,mBAAmB;IACnB,cAAqD,EAAS;QAE9D,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE9B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAE,WAAmC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YAEjE,MAAM,aAAa,GAAG,KAAK,GAAG,IAAI,CAAA;YAElC,IAAI,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClC,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAA;YAChE,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;QACnB,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,GAAG,IAAI,GAAG,GAAG,CAAA;QACnB,CAAC;QAED,OAAO,IAAI,EAAE,IAAI,EAAE,CAAA;IACrB,CAAC;IAED;;;OAGG;IACI,MAAM;QACX,IAAI,MAAM;YAAE,OAAM;QAElB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAA;YACjB,OAAM;QACR,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QAEjD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;QAE7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACxC,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE;YACzC,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAA;QAEF,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;IACpE,CAAC;IAED;;;;OAIG;IACI,QAAQ,CACb,KAAQ;IACR,mBAAmB;IACnB,UAAgF,EAAS;QAEzF,aAAa;QACb,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAE9B,IAAI,QAAQ,GAAG,EAAE,CAAA;QACjB,IAAI,MAAM,GAAG,IAAI,CAAA;QACjB,IAAI,WAAW,GAAG,EAAE,CAAA;QAEpB,MAAM,cAAc,GAAG,QAAQ,CAAA;QAE/B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAI,OAA+B,EAAE,CAAC,GAAG,CAAC,CAAA;YAErD,MAAM,aAAa,GAAG,KAAK,GAAG,IAAI,CAAA;YAElC,IAAI,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClC,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAEtE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACjE,CAAC;iBAAM,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;gBACjC,MAAM,GAAG,KAAK,CAAA;YAChB,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YACnD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,GAAG,IAAI,CAAA;QACnB,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,YAAY,GAAkB,IAAI,CAAA;YAEtC,KAAK,MAAM,QAAQ,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAChC,MAAM,KAAK,GAAG,GAAG,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAA;gBACxD,MAAM,SAAS,GAAW,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;gBAEzD,YAAY,GAAG,GAAG,YAAY,IAAI,EAAE,GAAG,SAAS,GAAG,KAAK,EAAE,CAAA;YAC5D,CAAC;YAED,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,IAAI,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAC1B,CAAC;gBAED,IAAI,GAAG,GAAG,IAAI,IAAI,YAAY,EAAE,CAAA;YAClC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,GAAG,IAAI,GAAG,GAAG,CAAA;QACnB,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,QAAa,EAAE;YACnC,MAAM;YACN,WAAW;SACZ,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACI,EAAE,CAAC,IAAe,EAAE,UAAa,IAAoB,EAAE,IAAI,GAAG,EAAE;QACrE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;IAED;;OAEG;IACI,WAAW;QAChB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;IACpB,CAAC;CACF"}
|