@furystack/shades 12.2.5 → 12.4.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/CHANGELOG.md +99 -0
- package/esm/components/lazy-load.d.ts +2 -0
- package/esm/components/lazy-load.d.ts.map +1 -1
- package/esm/components/lazy-load.js +8 -3
- package/esm/components/lazy-load.js.map +1 -1
- package/esm/components/lazy-load.spec.js +59 -1
- package/esm/components/lazy-load.spec.js.map +1 -1
- package/esm/components/nested-router.d.ts +53 -0
- package/esm/components/nested-router.d.ts.map +1 -1
- package/esm/components/nested-router.js +35 -10
- package/esm/components/nested-router.js.map +1 -1
- package/esm/components/nested-router.spec.js +267 -19
- package/esm/components/nested-router.spec.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -0
- package/esm/index.js.map +1 -1
- package/esm/services/index.d.ts +2 -0
- package/esm/services/index.d.ts.map +1 -1
- package/esm/services/index.js +2 -0
- package/esm/services/index.js.map +1 -1
- package/esm/services/route-match-service.d.ts +12 -0
- package/esm/services/route-match-service.d.ts.map +1 -0
- package/esm/services/route-match-service.js +24 -0
- package/esm/services/route-match-service.js.map +1 -0
- package/esm/services/route-match-service.spec.d.ts +2 -0
- package/esm/services/route-match-service.spec.d.ts.map +1 -0
- package/esm/services/route-match-service.spec.js +120 -0
- package/esm/services/route-match-service.spec.js.map +1 -0
- package/esm/services/route-meta-utils.d.ts +57 -0
- package/esm/services/route-meta-utils.d.ts.map +1 -0
- package/esm/services/route-meta-utils.js +64 -0
- package/esm/services/route-meta-utils.js.map +1 -0
- package/esm/services/route-meta-utils.spec.d.ts +2 -0
- package/esm/services/route-meta-utils.spec.d.ts.map +1 -0
- package/esm/services/route-meta-utils.spec.js +217 -0
- package/esm/services/route-meta-utils.spec.js.map +1 -0
- package/esm/shade.d.ts.map +1 -1
- package/esm/shade.js +12 -1
- package/esm/shade.js.map +1 -1
- package/esm/shade.spec.js +93 -2
- package/esm/shade.spec.js.map +1 -1
- package/esm/view-transition.d.ts +38 -0
- package/esm/view-transition.d.ts.map +1 -0
- package/esm/view-transition.js +50 -0
- package/esm/view-transition.js.map +1 -0
- package/esm/view-transition.spec.d.ts +2 -0
- package/esm/view-transition.spec.d.ts.map +1 -0
- package/esm/view-transition.spec.js +184 -0
- package/esm/view-transition.spec.js.map +1 -0
- package/package.json +1 -1
- package/src/components/lazy-load.spec.tsx +78 -1
- package/src/components/lazy-load.tsx +10 -3
- package/src/components/nested-router.spec.tsx +389 -35
- package/src/components/nested-router.tsx +93 -10
- package/src/index.ts +1 -0
- package/src/services/index.ts +2 -0
- package/src/services/route-match-service.spec.ts +45 -0
- package/src/services/route-match-service.ts +17 -0
- package/src/services/route-meta-utils.spec.ts +243 -0
- package/src/services/route-meta-utils.ts +85 -0
- package/src/shade.spec.tsx +112 -2
- package/src/shade.ts +11 -1
- package/src/view-transition.spec.ts +218 -0
- package/src/view-transition.ts +66 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
2
|
+
if (value !== null && value !== void 0) {
|
|
3
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
4
|
+
var dispose, inner;
|
|
5
|
+
if (async) {
|
|
6
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
7
|
+
dispose = value[Symbol.asyncDispose];
|
|
8
|
+
}
|
|
9
|
+
if (dispose === void 0) {
|
|
10
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
11
|
+
dispose = value[Symbol.dispose];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
15
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
16
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
17
|
+
}
|
|
18
|
+
else if (async) {
|
|
19
|
+
env.stack.push({ async: true });
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
24
|
+
return function (env) {
|
|
25
|
+
function fail(e) {
|
|
26
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
|
+
env.hasError = true;
|
|
28
|
+
}
|
|
29
|
+
var r, s = 0;
|
|
30
|
+
function next() {
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
|
+
try {
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
fail(e);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
45
|
+
if (env.hasError) throw env.error;
|
|
46
|
+
}
|
|
47
|
+
return next();
|
|
48
|
+
};
|
|
49
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
50
|
+
var e = new Error(message);
|
|
51
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
52
|
+
});
|
|
53
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
54
|
+
import { RouteMatchService } from './route-match-service.js';
|
|
55
|
+
describe('RouteMatchService', () => {
|
|
56
|
+
it('should start with an empty match chain', () => {
|
|
57
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
58
|
+
try {
|
|
59
|
+
const service = __addDisposableResource(env_1, new RouteMatchService(), false);
|
|
60
|
+
expect(service.currentMatchChain.getValue()).toEqual([]);
|
|
61
|
+
}
|
|
62
|
+
catch (e_1) {
|
|
63
|
+
env_1.error = e_1;
|
|
64
|
+
env_1.hasError = true;
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
__disposeResources(env_1);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
it('should update the match chain', () => {
|
|
71
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
72
|
+
try {
|
|
73
|
+
const service = __addDisposableResource(env_2, new RouteMatchService(), false);
|
|
74
|
+
const chain = [
|
|
75
|
+
{
|
|
76
|
+
route: { component: () => ({}) },
|
|
77
|
+
match: { path: '/about', params: {} },
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
service.currentMatchChain.setValue(chain);
|
|
81
|
+
expect(service.currentMatchChain.getValue()).toBe(chain);
|
|
82
|
+
}
|
|
83
|
+
catch (e_2) {
|
|
84
|
+
env_2.error = e_2;
|
|
85
|
+
env_2.hasError = true;
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
__disposeResources(env_2);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
it('should notify subscribers on match chain change', () => {
|
|
92
|
+
const env_3 = { stack: [], error: void 0, hasError: false };
|
|
93
|
+
try {
|
|
94
|
+
const service = __addDisposableResource(env_3, new RouteMatchService(), false);
|
|
95
|
+
const listener = vi.fn();
|
|
96
|
+
const _subscription = __addDisposableResource(env_3, service.currentMatchChain.subscribe(listener), false);
|
|
97
|
+
const chain = [
|
|
98
|
+
{
|
|
99
|
+
route: { meta: { title: 'Home' }, component: () => ({}) },
|
|
100
|
+
match: { path: '/', params: {} },
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
service.currentMatchChain.setValue(chain);
|
|
104
|
+
expect(listener).toHaveBeenCalledWith(chain);
|
|
105
|
+
}
|
|
106
|
+
catch (e_3) {
|
|
107
|
+
env_3.error = e_3;
|
|
108
|
+
env_3.hasError = true;
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
__disposeResources(env_3);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
it('should dispose the observable on service disposal', () => {
|
|
115
|
+
const service = new RouteMatchService();
|
|
116
|
+
service[Symbol.dispose]();
|
|
117
|
+
expect(() => service.currentMatchChain.setValue([])).toThrow();
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=route-match-service.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-match-service.spec.js","sourceRoot":"","sources":["../../src/services/route-match-service.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;;;YAChD,MAAM,OAAO,kCAAG,IAAI,iBAAiB,EAAE,QAAA,CAAA;YACvC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;;;;;;;;;KACzD,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;;;YACvC,MAAM,OAAO,kCAAG,IAAI,iBAAiB,EAAE,QAAA,CAAA;YACvC,MAAM,KAAK,GAAsB;gBAC/B;oBACE,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAgB,EAAE;oBAC/C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;iBACtC;aACF,CAAA;YACD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;;;;;;;;KACzD,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;;;YACzD,MAAM,OAAO,kCAAG,IAAI,iBAAiB,EAAE,QAAA,CAAA;YACvC,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;YACxB,MAAM,aAAa,kCAAG,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAA,CAAA;YAEnE,MAAM,KAAK,GAAsB;gBAC/B;oBACE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAgB,EAAE;oBACxE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;iBACjC;aACF,CAAA;YACD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAEzC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;;;;;;;;;KAC7C,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAA;QACvC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;QAEzB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Injector } from '@furystack/inject';
|
|
2
|
+
import type { MatchChainEntry, NestedRoute, NestedRouteMeta } from '../components/nested-router.js';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves the title for a single match chain entry.
|
|
5
|
+
* If the title is a function, it is called with `{ match, injector }` (supports async).
|
|
6
|
+
* @param entry - A matched route entry from the match chain
|
|
7
|
+
* @param injector - The injector instance to pass to dynamic title resolvers
|
|
8
|
+
* @returns The resolved title string, or undefined if no title is configured
|
|
9
|
+
*/
|
|
10
|
+
export declare const resolveRouteTitle: (entry: MatchChainEntry, injector: Injector) => Promise<string | undefined>;
|
|
11
|
+
/**
|
|
12
|
+
* Resolves all titles from a match chain in parallel.
|
|
13
|
+
* @param chain - The match chain from outermost to innermost route
|
|
14
|
+
* @param injector - The injector instance to pass to dynamic title resolvers
|
|
15
|
+
* @returns An array of resolved titles (some may be undefined if no title is configured)
|
|
16
|
+
*/
|
|
17
|
+
export declare const resolveRouteTitles: (chain: MatchChainEntry[], injector: Injector) => Promise<Array<string | undefined>>;
|
|
18
|
+
/**
|
|
19
|
+
* Composes resolved titles into a single document title string.
|
|
20
|
+
* Filters out undefined entries before joining.
|
|
21
|
+
* @param titles - Array of resolved titles (may contain undefined)
|
|
22
|
+
* @param options - Formatting options
|
|
23
|
+
* @param options.separator - String placed between title segments (default: `' - '`)
|
|
24
|
+
* @param options.prefix - Optional app name prepended before all segments
|
|
25
|
+
* @returns The composed title string
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* buildDocumentTitle(['Media', 'Movies', 'Superman'], { prefix: 'My App', separator: ' / ' })
|
|
30
|
+
* // => 'My App / Media / Movies / Superman'
|
|
31
|
+
*
|
|
32
|
+
* buildDocumentTitle(['Settings', undefined, 'Profile'])
|
|
33
|
+
* // => 'Settings - Profile'
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare const buildDocumentTitle: (titles: Array<string | undefined>, options?: {
|
|
37
|
+
separator?: string;
|
|
38
|
+
prefix?: string;
|
|
39
|
+
}) => string;
|
|
40
|
+
/**
|
|
41
|
+
* A node in a navigation tree extracted from route definitions.
|
|
42
|
+
*/
|
|
43
|
+
export type NavTreeNode = {
|
|
44
|
+
pattern: string;
|
|
45
|
+
fullPath: string;
|
|
46
|
+
meta?: NestedRouteMeta;
|
|
47
|
+
children?: NavTreeNode[];
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Extracts a navigation tree from route definitions.
|
|
51
|
+
* Useful for rendering sidebar navigation or sitemap-like structures.
|
|
52
|
+
* @param routes - The route definitions to extract from
|
|
53
|
+
* @param parentPath - The parent path prefix (used internally for recursion)
|
|
54
|
+
* @returns An array of navigation tree nodes
|
|
55
|
+
*/
|
|
56
|
+
export declare const extractNavTree: (routes: Record<string, NestedRoute<unknown>>, parentPath?: string) => NavTreeNode[];
|
|
57
|
+
//# sourceMappingURL=route-meta-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-meta-utils.d.ts","sourceRoot":"","sources":["../../src/services/route-meta-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAEnG;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAU,OAAO,eAAe,EAAE,UAAU,QAAQ,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAI9G,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EAAE,EACxB,UAAU,QAAQ,KACjB,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAEnC,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EACjC,UAAU;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAChD,MAIF,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAA;CACzB,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,MAAM,KAAG,WAAW,EAU7G,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves the title for a single match chain entry.
|
|
3
|
+
* If the title is a function, it is called with `{ match, injector }` (supports async).
|
|
4
|
+
* @param entry - A matched route entry from the match chain
|
|
5
|
+
* @param injector - The injector instance to pass to dynamic title resolvers
|
|
6
|
+
* @returns The resolved title string, or undefined if no title is configured
|
|
7
|
+
*/
|
|
8
|
+
export const resolveRouteTitle = async (entry, injector) => {
|
|
9
|
+
const title = entry.route.meta?.title;
|
|
10
|
+
if (typeof title === 'function')
|
|
11
|
+
return await title({ match: entry.match, injector });
|
|
12
|
+
return title;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Resolves all titles from a match chain in parallel.
|
|
16
|
+
* @param chain - The match chain from outermost to innermost route
|
|
17
|
+
* @param injector - The injector instance to pass to dynamic title resolvers
|
|
18
|
+
* @returns An array of resolved titles (some may be undefined if no title is configured)
|
|
19
|
+
*/
|
|
20
|
+
export const resolveRouteTitles = async (chain, injector) => {
|
|
21
|
+
return Promise.all(chain.map((entry) => resolveRouteTitle(entry, injector)));
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Composes resolved titles into a single document title string.
|
|
25
|
+
* Filters out undefined entries before joining.
|
|
26
|
+
* @param titles - Array of resolved titles (may contain undefined)
|
|
27
|
+
* @param options - Formatting options
|
|
28
|
+
* @param options.separator - String placed between title segments (default: `' - '`)
|
|
29
|
+
* @param options.prefix - Optional app name prepended before all segments
|
|
30
|
+
* @returns The composed title string
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* buildDocumentTitle(['Media', 'Movies', 'Superman'], { prefix: 'My App', separator: ' / ' })
|
|
35
|
+
* // => 'My App / Media / Movies / Superman'
|
|
36
|
+
*
|
|
37
|
+
* buildDocumentTitle(['Settings', undefined, 'Profile'])
|
|
38
|
+
* // => 'Settings - Profile'
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export const buildDocumentTitle = (titles, options) => {
|
|
42
|
+
const { separator = ' - ', prefix } = options ?? {};
|
|
43
|
+
const parts = titles.filter((t) => t != null);
|
|
44
|
+
return prefix ? [prefix, ...parts].join(separator) : parts.join(separator);
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Extracts a navigation tree from route definitions.
|
|
48
|
+
* Useful for rendering sidebar navigation or sitemap-like structures.
|
|
49
|
+
* @param routes - The route definitions to extract from
|
|
50
|
+
* @param parentPath - The parent path prefix (used internally for recursion)
|
|
51
|
+
* @returns An array of navigation tree nodes
|
|
52
|
+
*/
|
|
53
|
+
export const extractNavTree = (routes, parentPath) => {
|
|
54
|
+
return Object.entries(routes).map(([pattern, route]) => {
|
|
55
|
+
const fullPath = parentPath ? `${parentPath === '/' ? '' : parentPath}${pattern}` : pattern;
|
|
56
|
+
return {
|
|
57
|
+
pattern,
|
|
58
|
+
fullPath,
|
|
59
|
+
meta: route.meta,
|
|
60
|
+
children: route.children ? extractNavTree(route.children, fullPath) : undefined,
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=route-meta-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-meta-utils.js","sourceRoot":"","sources":["../../src/services/route-meta-utils.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,KAAsB,EAAE,QAAkB,EAA+B,EAAE;IACjH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAA;IACrC,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAO,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;IACrF,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,KAAwB,EACxB,QAAkB,EACkB,EAAE;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAAiC,EACjC,OAAiD,EACzC,EAAE;IACV,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAA;IAC1D,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC5E,CAAC,CAAA;AAYD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAA4C,EAAE,UAAmB,EAAiB,EAAE;IACjH,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;QACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;QAC3F,OAAO;YACL,OAAO;YACP,QAAQ;YACR,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SAChF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-meta-utils.spec.d.ts","sourceRoot":"","sources":["../../src/services/route-meta-utils.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { Injector } from '@furystack/inject';
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
import { buildDocumentTitle, extractNavTree, resolveRouteTitle, resolveRouteTitles } from './route-meta-utils.js';
|
|
4
|
+
describe('resolveRouteTitle', () => {
|
|
5
|
+
const injector = new Injector();
|
|
6
|
+
it('should return undefined when no meta is configured', async () => {
|
|
7
|
+
const entry = {
|
|
8
|
+
route: { component: () => ({}) },
|
|
9
|
+
match: { path: '/about', params: {} },
|
|
10
|
+
};
|
|
11
|
+
expect(await resolveRouteTitle(entry, injector)).toBeUndefined();
|
|
12
|
+
});
|
|
13
|
+
it('should return undefined when meta has no title', async () => {
|
|
14
|
+
const entry = {
|
|
15
|
+
route: { meta: {}, component: () => ({}) },
|
|
16
|
+
match: { path: '/about', params: {} },
|
|
17
|
+
};
|
|
18
|
+
expect(await resolveRouteTitle(entry, injector)).toBeUndefined();
|
|
19
|
+
});
|
|
20
|
+
it('should return a static string title', async () => {
|
|
21
|
+
const entry = {
|
|
22
|
+
route: { meta: { title: 'About' }, component: () => ({}) },
|
|
23
|
+
match: { path: '/about', params: {} },
|
|
24
|
+
};
|
|
25
|
+
expect(await resolveRouteTitle(entry, injector)).toBe('About');
|
|
26
|
+
});
|
|
27
|
+
it('should resolve a synchronous function title', async () => {
|
|
28
|
+
const entry = {
|
|
29
|
+
route: {
|
|
30
|
+
meta: { title: ({ match }) => `User ${match.params.id}` },
|
|
31
|
+
component: () => ({}),
|
|
32
|
+
},
|
|
33
|
+
match: { path: '/users/42', params: { id: '42' } },
|
|
34
|
+
};
|
|
35
|
+
expect(await resolveRouteTitle(entry, injector)).toBe('User 42');
|
|
36
|
+
});
|
|
37
|
+
it('should resolve an async function title', async () => {
|
|
38
|
+
const entry = {
|
|
39
|
+
route: {
|
|
40
|
+
meta: {
|
|
41
|
+
title: async ({ match }) => {
|
|
42
|
+
const { id } = match.params;
|
|
43
|
+
return `Movie ${id}`;
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
component: () => ({}),
|
|
47
|
+
},
|
|
48
|
+
match: { path: '/movies/7', params: { id: '7' } },
|
|
49
|
+
};
|
|
50
|
+
expect(await resolveRouteTitle(entry, injector)).toBe('Movie 7');
|
|
51
|
+
});
|
|
52
|
+
it('should pass the injector to the title resolver', async () => {
|
|
53
|
+
const entry = {
|
|
54
|
+
route: {
|
|
55
|
+
meta: {
|
|
56
|
+
title: ({ injector: inj }) => (inj instanceof Injector ? 'has-injector' : 'no-injector'),
|
|
57
|
+
},
|
|
58
|
+
component: () => ({}),
|
|
59
|
+
},
|
|
60
|
+
match: { path: '/test', params: {} },
|
|
61
|
+
};
|
|
62
|
+
expect(await resolveRouteTitle(entry, injector)).toBe('has-injector');
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
describe('resolveRouteTitles', () => {
|
|
66
|
+
const injector = new Injector();
|
|
67
|
+
it('should resolve all titles in a mixed chain', async () => {
|
|
68
|
+
const chain = [
|
|
69
|
+
{
|
|
70
|
+
route: { meta: { title: 'Media' }, component: () => ({}) },
|
|
71
|
+
match: { path: '/media', params: {} },
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
route: { meta: { title: 'Movies' }, component: () => ({}) },
|
|
75
|
+
match: { path: '/movies', params: {} },
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
route: {
|
|
79
|
+
meta: { title: async ({ match }) => `Movie ${match.params.id}` },
|
|
80
|
+
component: () => ({}),
|
|
81
|
+
},
|
|
82
|
+
match: { path: '/7', params: { id: '7' } },
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
const titles = await resolveRouteTitles(chain, injector);
|
|
86
|
+
expect(titles).toEqual(['Media', 'Movies', 'Movie 7']);
|
|
87
|
+
});
|
|
88
|
+
it('should return an empty array for an empty chain', async () => {
|
|
89
|
+
const titles = await resolveRouteTitles([], injector);
|
|
90
|
+
expect(titles).toEqual([]);
|
|
91
|
+
});
|
|
92
|
+
it('should include undefined for entries without titles', async () => {
|
|
93
|
+
const chain = [
|
|
94
|
+
{
|
|
95
|
+
route: { meta: { title: 'Root' }, component: () => ({}) },
|
|
96
|
+
match: { path: '/', params: {} },
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
route: { component: () => ({}) },
|
|
100
|
+
match: { path: '/child', params: {} },
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
const titles = await resolveRouteTitles(chain, injector);
|
|
104
|
+
expect(titles).toEqual(['Root', undefined]);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe('buildDocumentTitle', () => {
|
|
108
|
+
it('should join titles with default separator', () => {
|
|
109
|
+
expect(buildDocumentTitle(['Media', 'Movies'])).toBe('Media - Movies');
|
|
110
|
+
});
|
|
111
|
+
it('should filter out undefined entries', () => {
|
|
112
|
+
expect(buildDocumentTitle(['Media', undefined, 'Movies'])).toBe('Media - Movies');
|
|
113
|
+
});
|
|
114
|
+
it('should use a custom separator', () => {
|
|
115
|
+
expect(buildDocumentTitle(['Media', 'Movies', 'Superman'], { separator: ' / ' })).toBe('Media / Movies / Superman');
|
|
116
|
+
});
|
|
117
|
+
it('should prepend a prefix', () => {
|
|
118
|
+
expect(buildDocumentTitle(['Media', 'Movies'], { prefix: 'My App' })).toBe('My App - Media - Movies');
|
|
119
|
+
});
|
|
120
|
+
it('should combine prefix and custom separator', () => {
|
|
121
|
+
expect(buildDocumentTitle(['Media', 'Movies', 'Superman'], { prefix: 'My App', separator: ' / ' })).toBe('My App / Media / Movies / Superman');
|
|
122
|
+
});
|
|
123
|
+
it('should return empty string for empty titles', () => {
|
|
124
|
+
expect(buildDocumentTitle([])).toBe('');
|
|
125
|
+
});
|
|
126
|
+
it('should return only prefix when all titles are undefined', () => {
|
|
127
|
+
expect(buildDocumentTitle([undefined, undefined], { prefix: 'My App' })).toBe('My App');
|
|
128
|
+
});
|
|
129
|
+
it('should return prefix alone when titles is empty', () => {
|
|
130
|
+
expect(buildDocumentTitle([], { prefix: 'My App' })).toBe('My App');
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
describe('extractNavTree', () => {
|
|
134
|
+
it('should extract a flat route tree', () => {
|
|
135
|
+
const routes = {
|
|
136
|
+
'/about': { meta: { title: 'About' }, component: () => ({}) },
|
|
137
|
+
'/contact': { meta: { title: 'Contact' }, component: () => ({}) },
|
|
138
|
+
};
|
|
139
|
+
const tree = extractNavTree(routes);
|
|
140
|
+
expect(tree).toEqual([
|
|
141
|
+
{ pattern: '/about', fullPath: '/about', meta: { title: 'About' }, children: undefined },
|
|
142
|
+
{ pattern: '/contact', fullPath: '/contact', meta: { title: 'Contact' }, children: undefined },
|
|
143
|
+
]);
|
|
144
|
+
});
|
|
145
|
+
it('should extract nested routes recursively', () => {
|
|
146
|
+
const routes = {
|
|
147
|
+
'/media': {
|
|
148
|
+
meta: { title: 'Media' },
|
|
149
|
+
component: () => ({}),
|
|
150
|
+
children: {
|
|
151
|
+
'/movies': { meta: { title: 'Movies' }, component: () => ({}) },
|
|
152
|
+
'/music': { meta: { title: 'Music' }, component: () => ({}) },
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
const tree = extractNavTree(routes);
|
|
157
|
+
expect(tree).toHaveLength(1);
|
|
158
|
+
expect(tree[0].pattern).toBe('/media');
|
|
159
|
+
expect(tree[0].fullPath).toBe('/media');
|
|
160
|
+
expect(tree[0].children).toHaveLength(2);
|
|
161
|
+
expect(tree[0].children[0]).toEqual({
|
|
162
|
+
pattern: '/movies',
|
|
163
|
+
fullPath: '/media/movies',
|
|
164
|
+
meta: { title: 'Movies' },
|
|
165
|
+
children: undefined,
|
|
166
|
+
});
|
|
167
|
+
expect(tree[0].children[1]).toEqual({
|
|
168
|
+
pattern: '/music',
|
|
169
|
+
fullPath: '/media/music',
|
|
170
|
+
meta: { title: 'Music' },
|
|
171
|
+
children: undefined,
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
it('should handle root "/" parent path correctly', () => {
|
|
175
|
+
const routes = {
|
|
176
|
+
'/': {
|
|
177
|
+
meta: { title: 'Home' },
|
|
178
|
+
component: () => ({}),
|
|
179
|
+
children: {
|
|
180
|
+
'/settings': { meta: { title: 'Settings' }, component: () => ({}) },
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
const tree = extractNavTree(routes);
|
|
185
|
+
expect(tree[0].fullPath).toBe('/');
|
|
186
|
+
expect(tree[0].children[0].fullPath).toBe('/settings');
|
|
187
|
+
});
|
|
188
|
+
it('should compute correct fullPath for deeply nested routes (3+ levels)', () => {
|
|
189
|
+
const routes = {
|
|
190
|
+
'/a': {
|
|
191
|
+
meta: { title: 'A' },
|
|
192
|
+
component: () => ({}),
|
|
193
|
+
children: {
|
|
194
|
+
'/b': {
|
|
195
|
+
meta: { title: 'B' },
|
|
196
|
+
component: () => ({}),
|
|
197
|
+
children: {
|
|
198
|
+
'/c': { meta: { title: 'C' }, component: () => ({}) },
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
const tree = extractNavTree(routes);
|
|
205
|
+
expect(tree[0].fullPath).toBe('/a');
|
|
206
|
+
expect(tree[0].children[0].fullPath).toBe('/a/b');
|
|
207
|
+
expect(tree[0].children[0].children[0].fullPath).toBe('/a/b/c');
|
|
208
|
+
});
|
|
209
|
+
it('should include routes without meta', () => {
|
|
210
|
+
const routes = {
|
|
211
|
+
'/hidden': { component: () => ({}) },
|
|
212
|
+
};
|
|
213
|
+
const tree = extractNavTree(routes);
|
|
214
|
+
expect(tree[0].meta).toBeUndefined();
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
//# sourceMappingURL=route-meta-utils.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-meta-utils.spec.js","sourceRoot":"","sources":["../../src/services/route-meta-utils.spec.ts"],"names":[],"mappings":"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"}
|
package/esm/shade.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade.d.ts","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAS/F,MAAM,MAAM,YAAY,CAAC,MAAM,EAAE,YAAY,SAAS,WAAW,IAAI;IACnE;;;;;OAKG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAErF;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAEzC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAEpC;;;;;;;;;;;;;;;;OAgBG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,EAAE,YAAY,SAAS,WAAW,GAAG,WAAW,EAC1E,GAAG,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"shade.d.ts","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAS/F,MAAM,MAAM,YAAY,CAAC,MAAM,EAAE,YAAY,SAAS,WAAW,IAAI;IACnE;;;;;OAKG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAErF;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IAEzC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAEpC;;;;;;;;;;;;;;;;OAgBG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;CAChB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,MAAM,EAAE,YAAY,SAAS,WAAW,GAAG,WAAW,EAC1E,GAAG,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAuX7B,OAAO,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,EAAE,WAAW,YAAY,KAgB9D,GAAG,CAAC,OAEpB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,QAAO,OAAO,CAAC,IAAI,CAA4D,CAAA"}
|
package/esm/shade.js
CHANGED
|
@@ -42,10 +42,17 @@ export const Shade = (o) => {
|
|
|
42
42
|
* Cached ref objects keyed by the user-provided key string.
|
|
43
43
|
*/
|
|
44
44
|
_refs = new Map();
|
|
45
|
+
/**
|
|
46
|
+
* Set to true once disconnectedCallback fires. Prevents ghost re-renders
|
|
47
|
+
* triggered by observable changes during async disposal.
|
|
48
|
+
*/
|
|
49
|
+
_disconnected = false;
|
|
45
50
|
connectedCallback() {
|
|
51
|
+
this._disconnected = false;
|
|
46
52
|
this._performUpdate();
|
|
47
53
|
}
|
|
48
54
|
async disconnectedCallback() {
|
|
55
|
+
this._disconnected = true;
|
|
49
56
|
this._refs.clear();
|
|
50
57
|
this._prevVTree = null;
|
|
51
58
|
this._prevHostProps = null;
|
|
@@ -151,10 +158,12 @@ export const Shade = (o) => {
|
|
|
151
158
|
* runs are coalesced into a single render pass.
|
|
152
159
|
*/
|
|
153
160
|
updateComponent() {
|
|
161
|
+
if (this._disconnected)
|
|
162
|
+
return;
|
|
154
163
|
if (!this._updateScheduled) {
|
|
155
164
|
this._updateScheduled = true;
|
|
156
165
|
queueMicrotask(() => {
|
|
157
|
-
if (!this._updateScheduled)
|
|
166
|
+
if (!this._updateScheduled || this._disconnected)
|
|
158
167
|
return;
|
|
159
168
|
this._updateScheduled = false;
|
|
160
169
|
this._performUpdate();
|
|
@@ -167,6 +176,8 @@ export const Shade = (o) => {
|
|
|
167
176
|
* in a single call frame rather than cascading across microtask ticks.
|
|
168
177
|
*/
|
|
169
178
|
updateComponentSync() {
|
|
179
|
+
if (this._disconnected)
|
|
180
|
+
return;
|
|
170
181
|
this._updateScheduled = false;
|
|
171
182
|
this._performUpdate();
|
|
172
183
|
}
|
package/esm/shade.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAoDzD;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,CAAqC,EACrC,EAAE;IACF,0BAA0B;IAC1B,MAAM,iBAAiB,GAAG,CAAC,CAAC,aAAa,CAAA;IAEzC,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,kCAAkC;QAClC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACV,YAAY,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,eAAe,CAAC,CAAA;QACnF,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,IAAI,WAAW,CAAA;QAEhD,cAAc,CAAC,MAAM,CACnB,iBAAiB,EACjB,KAAM,SAAS,WAA0C;YAC/C,YAAY,GAAG,CAAC,CAAA;YAExB;;eAEG;YACI,cAAc;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAA;YAC1B,CAAC;YAEM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;YAE9C;;;eAGG;YACK,iBAAiB,GAAwE,EAAE,CAAA;YAEnG;;eAEG;YACK,cAAc,GAAmC,IAAI,CAAA;YAE7D;;eAEG;YACK,KAAK,GAAG,IAAI,GAAG,EAA8B,CAAA;YAE9C,iBAAiB;gBACtB,IAAI,CAAC,cAAc,EAAE,CAAA;YACvB,CAAC;YAEM,KAAK,CAAC,oBAAoB;gBAC/B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;gBAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;gBAC1B,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;YACnD,CAAC;YAED;;eAEG;YACI,KAAK,CAAuE;YAEnF;;eAEG;YACI,aAAa,CAAe;YAEnC;;;eAGG;YACI,MAAM,GAAG,CAAC,OAA4C,EAAE,EAAE;gBAC/D,IAAI,CAAC,YAAY,EAAE,CAAA;gBACnB,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAC1B,CAAC,CAAA;YAED;;eAEG;YACK,gBAAgB,GAAG,GAAwC,EAAE;gBACnE,MAAM,aAAa,GAAwC;oBACzD,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,QAAQ,EAAE,IAAI,CAAC,aAAa;oBAC5B,WAAW,EAAE,IAAI,CAAC,YAAY;oBAC9B,YAAY,EAAE,CAAC,SAAS,EAAE,EAAE;wBAC1B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;oBACxC,CAAC;oBACD,MAAM,EAAE,CAAkC,GAAW,EAAgB,EAAE;wBACrE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAA6B,CAAA;wBACnE,IAAI,WAAW;4BAAE,OAAO,WAAW,CAAA;wBACnC,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,EAA2B,CAAA;wBAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAA0C,CAAC,CAAA;wBAC/D,OAAO,SAAyB,CAAA;oBAClC,CAAC;oBACD,aAAa,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;wBAC1C,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAA;wBACpE,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;oBAC/E,CAAC;oBACD,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,CAC9B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACnF,cAAc,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,CACpC,IAAI,CAAC,eAAe,CAAC,aAAa,CAChC,kBAAkB,GAAG,EAAE,EACvB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,EAC5E,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAC7B;oBAEH,cAAc,EAAE,CAAI,GAAW,EAAE,YAAe,EAAE,WAAW,GAAG,YAAY,EAAE,EAAE;wBAC9E,MAAM,cAAc,GAAG,GAAG,EAAE;4BAC1B,MAAM,KAAK,GAAG,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;4BACvC,OAAO,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAO,CAAC,CAAC,CAAC,YAAY,CAAA;wBACxD,CAAC,CAAA;wBAED,MAAM,YAAY,GAAG,CAAC,KAAQ,EAAE,EAAE;4BAChC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gCACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gCACtC,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;4BACrC,CAAC;4BACD,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gCACpE,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;4BAC5B,CAAC;wBACH,CAAC,CAAA;wBAED,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CACnD,kBAAkB,GAAG,EAAE,EACvB,GAAG,EAAE,CAAC,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,CAC5C,CAAA;wBAED,MAAM,sBAAsB,GAAG,CAAC,CAAe,EAAE,EAAE;4BACjD,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;gCACnD,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAO,CAAC,IAAI,YAAY,CAAC,CAAA;4BAC7E,CAAC;wBACH,CAAC,CAAA;wBAED,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,kBAAkB,GAAG,gBAAgB,EAAE,GAAG,EAAE;4BAC7E,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAA;4BAC1D,MAAM,WAAW,GAAG,kCAAkC,CAAA;4BACtD,MAAM,cAAc,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAA;4BACxD,cAAc,CAAC,SAAS,GAAG,CAAC,CAA2C,EAAE,EAAE;gCACzE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oCACvB,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gCAC5B,CAAC;4BACH,CAAC,CAAA;4BACD,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gCAClD,cAAc,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;4BAC5C,CAAC,CAAC,CAAA;4BAEF,OAAO;gCACL,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE;oCACrB,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAA;oCAC7D,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;oCAC9B,cAAc,CAAC,KAAK,EAAE,CAAA;gCACxB,CAAC;6BACF,CAAA;wBACH,CAAC,CAAC,CAAA;wBAEF,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;wBAElC,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,kBAAkB,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAClF,IAAI,CAAC,eAAe,EAAE,CACvB,CAAA;oBACH,CAAC;oBACD,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;iBAC7E,CAAA;gBAED,OAAO,aAAa,CAAA;YACtB,CAAC,CAAA;YAEO,gBAAgB,GAAG,KAAK,CAAA;YAEhC;;;eAGG;YACK,UAAU,GAAoB,IAAI,CAAA;YAE1C;;;eAGG;YACI,eAAe;gBACpB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;oBAC5B,cAAc,CAAC,GAAG,EAAE;wBAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB;4BAAE,OAAM;wBAClC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;wBAC7B,IAAI,CAAC,cAAc,EAAE,CAAA;oBACvB,CAAC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAED;;;;eAIG;YACI,mBAAmB;gBACxB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAA;gBAC7B,IAAI,CAAC,cAAc,EAAE,CAAA;YACvB,CAAC;YAEO,cAAc;gBACpB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAA;gBAC3B,IAAI,YAAqB,CAAA;gBACzB,aAAa,CAAC,IAAI,CAAC,CAAA;gBACnB,IAAI,CAAC;oBACH,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAA;gBACrD,CAAC;wBAAS,CAAC;oBACT,aAAa,CAAC,KAAK,CAAC,CAAA;gBACtB,CAAC;gBAED,qEAAqE;gBACrE,mEAAmE;gBACnE,+BAA+B;gBAC/B,IAAI,CAAC,eAAe,EAAE,CAAA;gBAEtB,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;gBAC5C,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAA;gBACpD,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAA;YAC5B,CAAC;YAED;;;eAGG;YACK,eAAe;gBACrB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;wBACxB,yCAAyC;wBACzC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;4BACnD,IAAI,GAAG,KAAK,OAAO;gCAAE,SAAQ;4BAC7B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;wBAC3B,CAAC;wBACD,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;4BAC9B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAA+B,CAAC,EAAE,CAAC;gCAClF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oCACxB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;gCAC/B,CAAC;qCAAM,CAAC;oCACN,CAAC;oCAAC,IAAI,CAAC,KAA2C,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;gCAC7D,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;oBAC5B,CAAC;oBACD,OAAM;gBACR,CAAC;gBAED,yDAAyD;gBACzD,MAAM,MAAM,GAA4B,EAAE,CAAA;gBAC1C,IAAI,WAA+C,CAAA;gBAEnD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;wBAC9C,IAAI,GAAG,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;4BACnE,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE,GAAI,KAAgC,EAAE,CAAA;wBACxE,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;wBACrB,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,CAAC,KAAK,GAAG,WAAW,CAAA;gBAC5B,CAAC;gBAED,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,IAAI,EAAE,CAAA;gBACvC,MAAM,KAAK,GAAG,MAAM,CAAA;gBAEpB,sCAAsC;gBACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrC,IAAI,GAAG,KAAK,OAAO;wBAAE,SAAQ;oBAC7B,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;wBACpB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC;4BAC7D,CAAC;4BAAC,IAA2C,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;wBAC3D,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;wBAC3B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,+BAA+B;gBAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,IAAI,GAAG,KAAK,OAAO;wBAAE,SAAQ;oBAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;wBACzB,IAAI,OAAO,KAAK,KAAK,UAAU,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;4BACjF,CAAC;4BAAC,IAA2C,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;wBAC5D,CAAC;6BAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;4BACpE,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gCAChB,CAAC;gCAAC,IAA2C,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;4BAChE,CAAC;4BACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;wBAC3B,CAAC;6BAAM,CAAC;4BACN,gEAAgE;4BAChE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;wBACvC,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,cAAc;gBACd,MAAM,QAAQ,GAAI,KAAK,CAAC,KAAgC,IAAI,EAAE,CAAA;gBAC9D,MAAM,QAAQ,GAAI,WAAsC,IAAI,EAAE,CAAA;gBAE9D,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvC,IAAI,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,CAAC;wBACtB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;4BACxB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;wBAC/B,CAAC;6BAAM,CAAC;4BACN,CAAC;4BAAC,IAAI,CAAC,KAA2C,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;wBAC7D,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChD,IAAI,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;wBACxB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;4BACxB,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;wBAChC,CAAC;6BAAM,CAAC;4BACN,CAAC;4BAAC,IAAI,CAAC,KAA2C,CAAC,EAAE,CAAC,GAAG,EAAE,CAAA;wBAC7D,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,cAAc,GAAG,MAAM,CAAA;YAC9B,CAAC;YAEO,SAAS,CAAW;YAEpB,qBAAqB;gBAC3B,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAA;gBAC/B,OAAO,MAAM,EAAE,CAAC;oBACd,IAAK,MAAsB,CAAC,QAAQ,EAAE,CAAC;wBACrC,OAAQ,MAAsB,CAAC,QAAQ,CAAA;oBACzC,CAAC;oBACD,MAAM,GAAG,MAAM,CAAC,aAAa,CAAA;gBAC/B,CAAC;YACH,CAAC;YAED,IAAW,QAAQ;gBACjB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,OAAO,IAAI,CAAC,SAAS,CAAA;gBACvB,CAAC;gBAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;gBACzE,IAAI,SAAS,IAAI,SAAS,YAAY,QAAQ,EAAE,CAAC;oBAC/C,OAAO,SAAS,CAAA;gBAClB,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAA;gBAC/C,IAAI,UAAU,EAAE,CAAC;oBACf,IAAI,CAAC,SAAS,GAAG,UAAU,CAAA;oBAC3B,OAAO,UAAU,CAAA;gBACnB,CAAC;gBACD,wDAAwD;gBACxD,OAAO,IAAI,QAAQ,EAAE,CAAA;YACvB,CAAC;YAED,IAAW,QAAQ,CAAC,CAAW;gBAC7B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;YACpB,CAAC;SACF,EACD,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAC/D,CAAA;IACH,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC,aAAa,gCAAgC,CAAC,CAAA;IAC3F,CAAC;IAED,OAAO,CAAC,KAA4C,EAAE,QAAuB,EAAE,EAAE;QAC/E,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QACzD,MAAM,EAAE,GAAG,IAAK,WAAwC,CAAC;YACvD,GAAI,KAAwE;SAC7E,CAAwB,CAAA;QAEzB,EAAE,CAAC,KAAK,GAAG,KAAK,IAAK,EAA4C,CAAA;QACjE,EAAE,CAAC,aAAa,GAAG,QAAQ,CAAA;QAE3B,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;YACtB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;QAC1C,CAAC;QAED,YAAY,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACpC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QAEtB,OAAO,EAAiB,CAAA;IAC1B,CAAC,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAkB,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"shade.js","sourceRoot":"","sources":["../src/shade.ts"],"names":[],"mappings":"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"}
|