@typed/router 0.13.0 → 0.15.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.
Files changed (95) hide show
  1. package/dist/Link.d.ts +26 -11
  2. package/dist/Link.d.ts.map +1 -1
  3. package/dist/Link.js +47 -23
  4. package/dist/Link.js.map +1 -1
  5. package/dist/Match.d.ts +33 -0
  6. package/dist/Match.d.ts.map +1 -0
  7. package/dist/Match.js +16 -0
  8. package/dist/Match.js.map +1 -0
  9. package/dist/Matcher.d.ts +28 -0
  10. package/dist/Matcher.d.ts.map +1 -0
  11. package/dist/Matcher.js +24 -0
  12. package/dist/Matcher.js.map +1 -0
  13. package/dist/Navigation.d.ts +10 -0
  14. package/dist/Navigation.d.ts.map +1 -0
  15. package/dist/Navigation.js +7 -0
  16. package/dist/Navigation.js.map +1 -0
  17. package/dist/Redirect.d.ts +29 -0
  18. package/dist/Redirect.d.ts.map +1 -0
  19. package/dist/Redirect.js +17 -0
  20. package/dist/Redirect.js.map +1 -0
  21. package/dist/RouteOutlet.d.ts +3 -0
  22. package/dist/RouteOutlet.d.ts.map +1 -0
  23. package/dist/RouteOutlet.js +2 -0
  24. package/dist/RouteOutlet.js.map +1 -0
  25. package/dist/ScrollRestoration.d.ts +19 -0
  26. package/dist/ScrollRestoration.d.ts.map +1 -0
  27. package/dist/ScrollRestoration.js +64 -0
  28. package/dist/ScrollRestoration.js.map +1 -0
  29. package/dist/cjs/Link.d.ts +26 -11
  30. package/dist/cjs/Link.d.ts.map +1 -1
  31. package/dist/cjs/Link.js +47 -22
  32. package/dist/cjs/Link.js.map +1 -1
  33. package/dist/cjs/Match.d.ts +33 -0
  34. package/dist/cjs/Match.d.ts.map +1 -0
  35. package/dist/cjs/Match.js +43 -0
  36. package/dist/cjs/Match.js.map +1 -0
  37. package/dist/cjs/Matcher.d.ts +28 -0
  38. package/dist/cjs/Matcher.d.ts.map +1 -0
  39. package/dist/cjs/Matcher.js +52 -0
  40. package/dist/cjs/Matcher.js.map +1 -0
  41. package/dist/cjs/Navigation.d.ts +10 -0
  42. package/dist/cjs/Navigation.d.ts.map +1 -0
  43. package/dist/cjs/Navigation.js +34 -0
  44. package/dist/cjs/Navigation.js.map +1 -0
  45. package/dist/cjs/Redirect.d.ts +29 -0
  46. package/dist/cjs/Redirect.d.ts.map +1 -0
  47. package/dist/cjs/Redirect.js +44 -0
  48. package/dist/cjs/Redirect.js.map +1 -0
  49. package/dist/cjs/ScrollRestoration.d.ts +19 -0
  50. package/dist/cjs/ScrollRestoration.d.ts.map +1 -0
  51. package/dist/cjs/ScrollRestoration.js +91 -0
  52. package/dist/cjs/ScrollRestoration.js.map +1 -0
  53. package/dist/cjs/index.d.ts +7 -3
  54. package/dist/cjs/index.d.ts.map +1 -1
  55. package/dist/cjs/index.js +7 -3
  56. package/dist/cjs/index.js.map +1 -1
  57. package/dist/cjs/matchRoutes.d.ts +8 -0
  58. package/dist/cjs/matchRoutes.d.ts.map +1 -0
  59. package/dist/cjs/matchRoutes.js +77 -0
  60. package/dist/cjs/matchRoutes.js.map +1 -0
  61. package/dist/cjs/router.d.ts +24 -63
  62. package/dist/cjs/router.d.ts.map +1 -1
  63. package/dist/cjs/router.js +22 -160
  64. package/dist/cjs/router.js.map +1 -1
  65. package/dist/index.d.ts +7 -3
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +7 -3
  68. package/dist/index.js.map +1 -1
  69. package/dist/matchRoutes.d.ts +8 -0
  70. package/dist/matchRoutes.d.ts.map +1 -0
  71. package/dist/matchRoutes.js +50 -0
  72. package/dist/matchRoutes.js.map +1 -0
  73. package/dist/router.d.ts +24 -63
  74. package/dist/router.d.ts.map +1 -1
  75. package/dist/router.js +18 -153
  76. package/dist/router.js.map +1 -1
  77. package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
  78. package/package.json +13 -11
  79. package/project.json +12 -10
  80. package/src/Link.ts +129 -39
  81. package/src/Match.ts +114 -0
  82. package/src/Matcher.ts +139 -0
  83. package/src/Navigation.ts +24 -0
  84. package/src/Redirect.ts +21 -0
  85. package/src/ScrollRestoration.ts +110 -0
  86. package/src/index.ts +7 -3
  87. package/src/matchRoutes.ts +112 -0
  88. package/src/router.ts +53 -311
  89. package/tsconfig.build.json +5 -1
  90. package/tsconfig.build.tsbuildinfo +1 -1
  91. package/tsconfig.cjs.build.json +6 -0
  92. package/tsconfig.json +6 -0
  93. package/vite.config.js +3 -0
  94. package/src/RouteMatch.ts +0 -56
  95. package/src/RouteMatcher.ts +0 -264
package/dist/router.d.ts CHANGED
@@ -1,76 +1,37 @@
1
1
  import * as Option from '@effect/data/Option';
2
- import * as Effect from '@effect/io/Effect';
3
- import type * as Layer from '@effect/io/Layer';
4
- import type * as Scope from '@effect/io/Scope';
5
- import * as Context from '@typed/context';
6
- import { Document, Location, History } from '@typed/dom';
7
- import * as Fx from '@typed/fx';
8
- import type * as html from '@typed/html';
9
- import { RenderContext } from '@typed/html';
10
- import * as Path from '@typed/path';
11
- import * as Route from '@typed/route';
12
- export interface Router<out R = never, out E = never, in out P extends string = string> {
2
+ import * as Layer from '@effect/io/Layer';
3
+ import { Tag } from '@typed/context';
4
+ import { DomServicesElementParams } from '@typed/dom';
5
+ import { Filtered } from '@typed/fx';
6
+ import * as Navigation from '@typed/navigation';
7
+ import { ParamsOf, PathJoin } from '@typed/path';
8
+ import { Route } from '@typed/route';
9
+ export interface Router<in out P extends string = string> {
13
10
  /**
14
- * The base route the Router is starting from.
11
+ * The base Route for this Router instance.
15
12
  */
16
- readonly route: Route.Route<R, E, P>;
13
+ readonly route: Route<P>;
17
14
  /**
18
- * The current path of the application
15
+ * The current params for the current path.
19
16
  */
20
- readonly currentPath: Fx.RefSubject<never, string>;
17
+ readonly params: Filtered<never, never, ParamsOf<P>>;
21
18
  /**
22
- * The current matched params of the router
19
+ * Construct a new Router instance by defining a new Route which is concatenated
20
+ * to the current Route.
23
21
  */
24
- readonly params: Fx.Fx<R, E, Path.ParamsOf<P>>;
22
+ readonly define: <P2 extends string>(route: Route<P2>) => Router<PathJoin<[P, P2]>>;
25
23
  /**
26
- * The current outlet of this Router
24
+ * The parent Router instance if one exists.
27
25
  */
28
- readonly outlet: Fx.RefSubject<Redirect, html.Renderable>;
26
+ readonly parent: Option.Option<Router<string>>;
29
27
  /**
30
- * Helper for constructing a path from a route relative to the router.
28
+ * The Navigation Service
31
29
  */
32
- readonly createPath: <R2 extends Route.Route<any, any, string>, P extends Route.ParamsOf<R2>>(route: R2, ...[params]: [keyof P] extends [never] ? [] : [P]) => Effect.Effect<R, never, Path.PathJoin<[
33
- Path.Interpolate<Route.PathOf<R>, Route.ParamsOf<R>>,
34
- Path.Interpolate<Route.PathOf<R2>, P>
35
- ]>>;
36
- /**
37
- * Helper for constructing a nested router
38
- */
39
- readonly define: <R2, E2, Path2 extends string>(route: Route.Route<R2, E2, Path2>) => Router<R | R2, E | E2, Path.PathJoin<[P, Path2]>>;
40
- /**
41
- * The parent router if one exists
42
- */
43
- readonly parent: Option.Option<Router<any, string>>;
44
- /**
45
- * Provide all the resources needed for a Router
46
- */
47
- readonly provideContext: (environment: Context.Context<R>) => Router<never, E, P>;
48
- }
49
- export declare const Router: Context.Tag<Router<never, never, string>, Router<never, never, string>> & {
50
- make: <R = never, E = never, P extends string = string>(route: Route.Route<R, E, P>, currentPath: Fx.RefSubject<never, string>, parent?: Option.Option<Router<any, any, string>>) => Router<R, E, P>;
51
- };
52
- export declare const outlet: Fx.Fx<RenderContext | Router, Redirect, html.Renderable>;
53
- export declare const currentPath: Fx.Fx<Router, never, string>;
54
- export declare function provideContext<R>(environment: Context.Context<R>): <E, P extends string>(router: Router<R, E, P>) => Router<never, E, P>;
55
- export interface Redirect {
56
- readonly _tag: 'Redirect';
57
- readonly path: string;
58
- }
59
- export declare namespace Redirect {
60
- const make: (path: string) => Redirect;
61
- const is: (r: unknown) => r is Redirect;
62
- }
63
- export declare function redirect(path: string): Effect.Effect<never, Redirect, never>;
64
- export declare namespace redirect {
65
- var fx: (path: string) => Fx.Fx<never, Redirect, never>;
30
+ readonly navigation: Navigation.Navigation;
66
31
  }
67
- export declare const redirectTo: {
68
- <R, E, P extends string>(route: Route.Route<R, E, P>, ...[params]: [keyof Path.PartsToParams<Path.PathToParts<P>, {}>] extends [never] ? [({} | undefined)?] : [Path.PartsToParams<Path.PathToParts<P>, {}> extends infer T ? { readonly [K in keyof T]: Path.PartsToParams<Path.PathToParts<P>, {}>[K]; } : never]): Effect.Effect<Router, Redirect, never>;
69
- fx<R_1, E_1, P_1 extends string>(route: Route.Route<R_1, E_1, P_1>, ...params: [keyof Path.PartsToParams<Path.PathToParts<P_1>, {}>] extends [never] ? [({} | undefined)?] : [(path: string) => Path.PartsToParams<Path.PathToParts<P_1>, {}> extends infer T_1 ? { readonly [K_1 in keyof T_1]: Path.PartsToParams<Path.PathToParts<P_1>, {}>[K_1]; } : never]): Fx.Fx<Router, Redirect, never>;
70
- };
71
- export declare const makeRouter: (currentPath?: Fx.RefSubject<never, string>) => Effect.Effect<Location | History | Window | Document | Scope.Scope, never, Router>;
72
- export declare const live: (currentPath?: Fx.RefSubject<never, string>) => Layer.Layer<Location | History | Window | Document, never, Router<never, never, string>>;
73
- export declare function getCurrentPathFromLocation(location: Location | HTMLAnchorElement | URL): string;
74
- export declare const getCurrentPath: Effect.Effect<Router<never, never, string>, never, string>;
75
- export declare const getBasePath: Effect.Effect<Router<never, never, string>, never, string>;
32
+ export declare const Router: Tag<Router<string>, Router<string>>;
33
+ export declare const navigation: Layer.Layer<Navigation.Navigation, never, Router>;
34
+ export declare function getCurrentPathFromUrl(url: URL): string;
35
+ export declare const dom: (options?: Navigation.DomNavigationOptions & DomServicesElementParams) => Layer.Layer<Navigation.NavigationServices, never, Navigation.Navigation | Router>;
36
+ export declare const memory: (options: Navigation.MemoryNavigationOptions) => Layer.Layer<never, never, Navigation.Navigation | Router>;
76
37
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAE7C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,MAAM,WAAW,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACtD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAExB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAEnF;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAE9C;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAA;CAC3C;AAED,eAAO,MAAM,MAAM,qCAAwB,CAAA;AAE3C,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAyBxE,CAAA;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEtD;AAED,eAAO,MAAM,GAAG,aACJ,WAAW,oBAAoB,GAAG,wBAAwB,KACnE,WAAW,CAAC,WAAW,kBAAkB,EAAE,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAC1B,CAAA;AAEzD,eAAO,MAAM,MAAM,YACR,WAAW,uBAAuB,KAC1C,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,qBAAqB,GAAG,MAAM,CACC,CAAA"}
package/dist/router.js CHANGED
@@ -1,163 +1,28 @@
1
- /* eslint-disable @typescript-eslint/ban-types */
2
- import { pipe } from '@effect/data/Function';
3
1
  import * as Option from '@effect/data/Option';
4
2
  import * as Effect from '@effect/io/Effect';
5
- import * as Runtime from '@effect/io/Runtime';
6
- import * as Context from '@typed/context';
7
- import { Document, Location, History, addWindowListener } from '@typed/dom';
8
- import * as Fx from '@typed/fx';
9
- import { RenderContext } from '@typed/html';
10
- import * as Path from '@typed/path';
11
- import * as Route from '@typed/route';
12
- export const Router = Object.assign(Context.Tag('@typed/router/Router'), {
13
- make: function makeRouter(route, currentPath, parent = Option.none()) {
14
- const outlet = Fx.RefSubject.unsafeMake(Effect.sync(() => null));
15
- const createPath = (other, ...[params]) => Effect.gen(function* ($) {
16
- const path = yield* $(currentPath.get);
17
- const baseParams = yield* $(route.match(path));
18
- if (Option.isNone(baseParams)) {
19
- return yield* $(Effect.dieMessage(`Can not create path when the parent can not be matched.
20
- Parent Route: ${route.path}
21
- Current Route: ${other.path}
22
- Current Path: ${path}`));
23
- }
24
- return route.concat(other).make({ ...baseParams.value, ...params });
25
- });
3
+ import * as Layer from '@effect/io/Layer';
4
+ import { Tag } from '@typed/context';
5
+ import * as Navigation from '@typed/navigation';
6
+ import { Route } from '@typed/route';
7
+ export const Router = Tag('Router');
8
+ export const navigation = Router.layer(Effect.gen(function* ($) {
9
+ const navigation = yield* $(Navigation.Navigation);
10
+ const currentPath = navigation.currentEntry.map((destination) => getCurrentPathFromUrl(destination.url));
11
+ function makeRouter(route, parent) {
26
12
  const router = {
27
13
  route,
28
- currentPath,
29
- params: pipe(currentPath, Fx.switchMapEffect(route.match), Fx.compact, Fx.hold),
30
- outlet,
31
- createPath: createPath,
32
- define: (other) => makeRouter(route.concat(other), currentPath, Option.some(router)),
33
- provideContext: (env) => provideContext(env)(router),
14
+ navigation,
15
+ params: currentPath.filterMap(route.match),
16
+ define: (other) => makeRouter(route.concat(other), Option.some(router)),
34
17
  parent,
35
18
  };
36
19
  return router;
37
- },
38
- });
39
- export const outlet = RenderContext.withFx(({ environment }) => Router.withFx((r) => environment === 'browser'
40
- ? r.outlet
41
- : pipe(r.outlet, Fx.skipUntil((x) => x !== null), Fx.take(1))));
42
- export const currentPath = Router.withFx((r) => r.currentPath);
43
- export function provideContext(environment) {
44
- return (router) => {
45
- const provided = {
46
- ...router,
47
- params: pipe(router.params, Fx.provideContext(environment)),
48
- route: Route.provideContext(environment)(router.route),
49
- createPath: ((other, ...params) => Effect.provideContext(environment)(router.createPath(other, ...params))),
50
- provideContext: (env) => provideContext(env)(provided),
51
- };
52
- return provided;
53
- };
54
- }
55
- export var Redirect;
56
- (function (Redirect) {
57
- Redirect.make = (path) => ({ _tag: 'Redirect', path });
58
- Redirect.is = (r) => typeof r === 'object' && r !== null && '_tag' in r && r._tag === 'Redirect';
59
- })(Redirect || (Redirect = {}));
60
- export function redirect(path) {
61
- return Effect.fail(Redirect.make(path));
62
- }
63
- redirect.fx = (path) => Fx.fail(Redirect.make(path));
64
- export const redirectTo = (route, ...[params]) => pipe(Router.withEffect((r) => r.createPath(route, params)), Effect.flatMap(redirect));
65
- redirectTo.fx = (route, ...params) => pipe(Router.withEffect((r) => r.createPath(route, params)), Fx.fromEffect, Fx.switchMap(redirect.fx));
66
- // TOOD: Add support for reading <base> tag for default Router path.
67
- export const makeRouter = (currentPath) => Effect.gen(function* ($) {
68
- const history = yield* $(History);
69
- const location = yield* $(Location);
70
- if (!currentPath) {
71
- currentPath = Fx.RefSubject.unsafeMake(Effect.sync(() => getCurrentPathFromLocation(location)));
72
- }
73
- // Patch history events to emit an event when the path changes
74
- const historyEvents = yield* $(patchHistory);
75
- // Update the current path when events occur:
76
- // - popstate
77
- // - hashchange
78
- // - history events
79
- yield* $(Fx.mergeAll(addWindowListener('popstate'), addWindowListener('hashchange'), historyEvents),
80
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
81
- Fx.switchMapEffect(() => currentPath.set(getCurrentPathFromLocation(location))), Fx.drain, Effect.forkScoped);
82
- // Listen to path changes and update the current history location, if necessary
83
- yield* $(pipe(currentPath, Fx.skipRepeats, Fx.observe((path) => Effect.sync(() => {
84
- if (path !== getCurrentPathFromLocation(location)) {
85
- history.pushState({}, '', path);
86
- }
87
- })), Effect.forkScoped));
88
- // Find the configured base path
89
- const document = yield* $(Document);
90
- const base = document.querySelector('base');
91
- const baseHref = base ? getBasePathFromHref(base.href) : '/';
92
- // Make our base router
93
- return Router.make(Route.Route(baseHref), currentPath);
94
- });
95
- export const live = (currentPath) => Router.layerScoped(makeRouter(currentPath));
96
- export function getCurrentPathFromLocation(location) {
97
- return location.pathname + location.search + location.hash;
98
- }
99
- export const getCurrentPath = Router.withEffect((r) => r.currentPath.get);
100
- export const getBasePath = Router.with((r) => {
101
- const routers = [r];
102
- let current = r;
103
- while (Option.isSome(current.parent)) {
104
- current = current.parent.value;
105
- routers.push(current);
106
- }
107
- return routers.reduceRight((acc, r) => Path.pathJoin(r.route.path, acc), '');
108
- });
109
- const patchHistory = Effect.gen(function* ($) {
110
- const history = yield* $(History);
111
- const historyEvents = Fx.makeSubject();
112
- const runtime = yield* $(Effect.runtime());
113
- const runFork = Runtime.runFork(runtime);
114
- const cleanup = patchHistory_(history, () => runFork(historyEvents.event()));
115
- // unpatch history upon finalization
116
- yield* $(Effect.addFinalizer(() => Effect.sync(cleanup)));
117
- return historyEvents;
118
- });
119
- function patchHistory_(history, sendEvent) {
120
- const pushState = history.pushState.bind(history);
121
- const replaceState = history.replaceState.bind(history);
122
- const go = history.go.bind(history);
123
- const back = history.back.bind(history);
124
- const forward = history.forward.bind(history);
125
- history.pushState = function (state, title, url) {
126
- pushState(state, title, url);
127
- sendEvent();
128
- };
129
- history.replaceState = function (state, title, url) {
130
- replaceState(state, title, url);
131
- sendEvent();
132
- };
133
- history.go = function (delta) {
134
- go(delta);
135
- sendEvent();
136
- };
137
- history.back = function () {
138
- back();
139
- sendEvent();
140
- };
141
- history.forward = function () {
142
- forward();
143
- sendEvent();
144
- };
145
- // Reset history to original state
146
- return () => {
147
- history.pushState = pushState;
148
- history.replaceState = replaceState;
149
- history.go = go;
150
- history.back = back;
151
- history.forward = forward;
152
- };
153
- }
154
- function getBasePathFromHref(href) {
155
- try {
156
- const url = new URL(href);
157
- return getCurrentPathFromLocation(url);
158
- }
159
- catch {
160
- return href;
161
20
  }
21
+ return makeRouter(Route(navigation.base), Option.none());
22
+ }));
23
+ export function getCurrentPathFromUrl(url) {
24
+ return url.pathname + url.search + url.hash;
162
25
  }
26
+ export const dom = (options) => Layer.provideMerge(Navigation.dom(options), navigation);
27
+ export const memory = (options) => Layer.provideMerge(Navigation.memory(options), navigation);
163
28
  //# sourceMappingURL=router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGpC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AA8BpC,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAS,QAAQ,CAAC,CAAA;AAE3C,MAAM,CAAC,MAAM,UAAU,GAAsD,MAAM,CAAC,KAAK,CACvF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;IAClD,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAC9D,qBAAqB,CAAC,WAAW,CAAC,GAAG,CAAC,CACvC,CAAA;IAED,SAAS,UAAU,CACjB,KAAe,EACf,MAAkC;QAElC,MAAM,MAAM,GAAc;YACxB,KAAK;YACL,UAAU;YACV,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;YAC1C,MAAM,EAAE,CAAoB,KAAgB,EAA6B,EAAE,CACzE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM;SACP,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;AAC1D,CAAC,CAAC,CACH,CAAA;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAQ;IAC5C,OAAO,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAA;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,OAAoE,EACe,EAAE,CACrF,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,OAA2C,EACgB,EAAE,CAC7D,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAA"}