@jalvin/runtime 2.0.41 → 2.0.42
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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/nav.d.ts +11 -67
- package/dist/nav.d.ts.map +1 -1
- package/dist/nav.js +77 -202
- package/dist/nav.js.map +1 -1
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +0 -3
- package/dist/ui.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -4,9 +4,9 @@ export { Job, JobCancellationException, Deferred, CoroutineScope, launch, async_
|
|
|
4
4
|
export type { Dispatcher, FlowCollector } from "./coroutines.js";
|
|
5
5
|
export { MutableStateFlow, mapFlow, filterFlow, debounceFlow, ViewModel, viewModel, clearViewModel, clearAllViewModels, } from "./stateflow.js";
|
|
6
6
|
export type { StateFlow, Subscriber, Unsubscribe } from "./stateflow.js";
|
|
7
|
-
export { jalvinCreateElement, patch } from "./dom.js";
|
|
8
7
|
export { NavController, NavGraphBuilder, NavHost, rememberNavController, } from "./nav.js";
|
|
9
8
|
export type { BackStackEntry, NavOptions } from "./nav.js";
|
|
9
|
+
export { jalvinCreateElement, patch } from "./dom.js";
|
|
10
10
|
export { mutableStateOf, remember, rememberMutableStateOf, collectAsState, LaunchedEffect, DisposableEffect, SideEffect, WindowSizeClassProvider, calculateWindowSizeClass, widthToSizeClass, heightToSizeClass, render, } from "./ui.js";
|
|
11
11
|
export type { MutableState, WindowSizeClass, WindowSizeClassState } from "./ui.js";
|
|
12
12
|
export { println, print, } from "./stdlib/io.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAClF,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG/F,OAAO,EACL,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EACR,cAAc,EACd,MAAM,EAAE,MAAM,IAAI,KAAK,EACvB,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EACvC,MAAM,EACN,WAAW,EAAE,iBAAiB,EAAE,4BAA4B,EAC5D,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAC1B,cAAc,EAAE,eAAe,GAChC,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EACL,gBAAgB,EAChB,OAAO,EAAE,UAAU,EAAE,YAAY,EACjC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,GACzD,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGzE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,10 +5,10 @@ export { Bibi, BibiRequestBuilder, BibiError, headers, timeout } from "./bibi.js
|
|
|
5
5
|
export { Job, JobCancellationException, Deferred, CoroutineScope, launch, async_ as async, delay, withContext, repeat, runBlocking, yield_, withTimeout, withTimeoutOrNull, TimeoutCancellationException, Channel, ChannelClosedException, Flow, flow, flowOf, asFlow, coroutineScope, supervisorScope, } from "./coroutines.js";
|
|
6
6
|
// StateFlow / ViewModel
|
|
7
7
|
export { MutableStateFlow, mapFlow, filterFlow, debounceFlow, ViewModel, viewModel, clearViewModel, clearAllViewModels, } from "./stateflow.js";
|
|
8
|
-
// UI hooks & Rendering
|
|
9
|
-
export { jalvinCreateElement, patch } from "./dom.js";
|
|
10
8
|
// Router — Compose Navigation-style declarative routing
|
|
11
9
|
export { NavController, NavGraphBuilder, NavHost, rememberNavController, } from "./nav.js";
|
|
10
|
+
// UI hooks & Rendering
|
|
11
|
+
export { jalvinCreateElement, patch } from "./dom.js";
|
|
12
12
|
export { mutableStateOf, remember, rememberMutableStateOf, collectAsState, LaunchedEffect, DisposableEffect, SideEffect, WindowSizeClassProvider, calculateWindowSizeClass, widthToSizeClass, heightToSizeClass, render, } from "./ui.js";
|
|
13
13
|
// Utilities / stdlib — each module is a single-purpose file under stdlib/
|
|
14
14
|
// See packages/runtime/src/stdlib/index.ts for the full module map.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,cAAc;AACd,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGlF,aAAa;AACb,OAAO,EACL,GAAG,EAAE,wBAAwB,EAC7B,QAAQ,EACR,cAAc,EACd,MAAM,EAAE,MAAM,IAAI,KAAK,EACvB,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EACvC,MAAM,EACN,WAAW,EAAE,iBAAiB,EAAE,4BAA4B,EAC5D,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAC1B,cAAc,EAAE,eAAe,GAChC,MAAM,iBAAiB,CAAC;AAGzB,wBAAwB;AACxB,OAAO,EACL,gBAAgB,EAChB,OAAO,EAAE,UAAU,EAAE,YAAY,EACjC,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,GACzD,MAAM,gBAAgB,CAAC;AAGxB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/nav.d.ts
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { StateFlow } from "./stateflow.js";
|
|
2
2
|
import type { VNode } from "./dom.js";
|
|
3
|
-
/** Information about the currently active destination in the back stack. */
|
|
4
3
|
export interface BackStackEntry {
|
|
5
|
-
/**
|
|
4
|
+
/** Matched route pattern, e.g. "profile/{userId}" */
|
|
6
5
|
route: string;
|
|
7
|
-
/**
|
|
6
|
+
/** Actual destination path, e.g. "profile/42" */
|
|
8
7
|
destination: string;
|
|
9
|
-
/**
|
|
8
|
+
/** Extracted path parameters */
|
|
10
9
|
arguments: Record<string, string>;
|
|
11
10
|
}
|
|
12
|
-
/** Options passed to NavController.navigate(). */
|
|
13
11
|
export interface NavOptions {
|
|
14
|
-
/** Pop back stack
|
|
12
|
+
/** Pop back stack up to (but not including) this route before navigating */
|
|
15
13
|
popUpTo?: string;
|
|
16
|
-
/**
|
|
14
|
+
/** If true, also pop the popUpTo route itself */
|
|
17
15
|
popUpToInclusive?: boolean;
|
|
18
|
-
/**
|
|
16
|
+
/** If true and already at destination, don't add a duplicate entry */
|
|
19
17
|
launchSingleTop?: boolean;
|
|
20
18
|
}
|
|
21
19
|
interface CompiledRoute {
|
|
@@ -24,78 +22,24 @@ interface CompiledRoute {
|
|
|
24
22
|
paramNames: string[];
|
|
25
23
|
content: (entry: BackStackEntry) => VNode;
|
|
26
24
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Collects route definitions registered by composable() calls.
|
|
29
|
-
* Passed as the argument to the NavHost trailing-block lambda.
|
|
30
|
-
*/
|
|
31
25
|
export declare class NavGraphBuilder {
|
|
32
|
-
/** @internal */
|
|
33
26
|
readonly _routes: CompiledRoute[];
|
|
34
|
-
/**
|
|
35
|
-
* Register a route destination.
|
|
36
|
-
*
|
|
37
|
-
* @param pattern Route pattern with optional {param} placeholders,
|
|
38
|
-
* e.g. "home", "profile/{userId}", "post/{id}/comments".
|
|
39
|
-
* @param content Composable that renders this destination.
|
|
40
|
-
* Receives the BackStackEntry so it can read route arguments.
|
|
41
|
-
*/
|
|
42
27
|
composable(pattern: string, content: (entry: BackStackEntry) => VNode): void;
|
|
43
28
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Manages the navigation back stack and drives route transitions.
|
|
46
|
-
*
|
|
47
|
-
* Create one via rememberNavController() and pass it to NavHost.
|
|
48
|
-
* Then thread it to screens that need to trigger navigation.
|
|
49
|
-
*/
|
|
50
29
|
export declare class NavController {
|
|
51
30
|
private readonly _backStack;
|
|
52
|
-
|
|
53
|
-
readonly currentBackStackEntry: StateFlow<BackStackEntry | null>;
|
|
31
|
+
private readonly _currentEntry;
|
|
54
32
|
private _resolver;
|
|
55
33
|
constructor();
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
_setResolver(resolver: (destination: string) => BackStackEntry): void;
|
|
59
|
-
/** @internal — NavHost calls this once on mount to seed the initial destination. */
|
|
34
|
+
get currentBackStackEntry(): StateFlow<BackStackEntry | null>;
|
|
35
|
+
_setResolver(resolver: (dest: string) => BackStackEntry | null): void;
|
|
60
36
|
_initFromHash(startDestination: string): void;
|
|
61
|
-
private
|
|
62
|
-
/**
|
|
63
|
-
* Navigate to a destination.
|
|
64
|
-
*
|
|
65
|
-
* @param destination The literal path to navigate to, e.g. "profile/42".
|
|
66
|
-
* This is the *destination* string, not the route pattern.
|
|
67
|
-
*/
|
|
37
|
+
private _navigateTo;
|
|
68
38
|
navigate(destination: string, options?: NavOptions): void;
|
|
69
|
-
/**
|
|
70
|
-
* Pop the current destination off the back stack (the system back action).
|
|
71
|
-
* Returns true if navigation happened, false if the stack had only one entry.
|
|
72
|
-
*/
|
|
73
39
|
popBackStack(): boolean;
|
|
74
|
-
/** Returns true if there is a previous destination to pop to. */
|
|
75
40
|
canPopBackStack(): boolean;
|
|
76
41
|
}
|
|
77
|
-
/**
|
|
78
|
-
* Creates a NavController and remembers it across recompositions.
|
|
79
|
-
* Call this at the root of your component tree.
|
|
80
|
-
*/
|
|
81
42
|
export declare function rememberNavController(): NavController;
|
|
82
|
-
/**
|
|
83
|
-
* The root navigation composable. Renders whichever route matches the current
|
|
84
|
-
* destination in the NavController's back stack.
|
|
85
|
-
*
|
|
86
|
-
* The children block receives a NavGraphBuilder and should call
|
|
87
|
-
* graph.composable() to register each destination:
|
|
88
|
-
*
|
|
89
|
-
* NavHost(navController = nav, startDestination = "home") { graph ->
|
|
90
|
-
* graph.composable("home") { HomeScreen(navController = nav) }
|
|
91
|
-
* graph.composable("profile/{userId}") { entry ->
|
|
92
|
-
* ProfileScreen(userId = entry.arguments["userId"], navController = nav)
|
|
93
|
-
* }
|
|
94
|
-
* }
|
|
95
|
-
*
|
|
96
|
-
* In compiled TypeScript the children array will contain a single function
|
|
97
|
-
* (graph: NavGraphBuilder) => void that populates the builder.
|
|
98
|
-
*/
|
|
99
43
|
export declare function NavHost(props: {
|
|
100
44
|
navController: NavController;
|
|
101
45
|
startDestination: string;
|
package/dist/nav.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../src/nav.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../src/nav.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,sEAAsE;IACtE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,KAAK,CAAC;CAC3C;AAyBD,qBAAa,eAAe;IAC1B,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,CAAM;IAEvC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,KAAK,GAAG,IAAI;CAI7E;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAwB;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0C;IACxE,OAAO,CAAC,SAAS,CAA0D;;IAM3E,IAAI,qBAAqB,IAAI,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAE5D;IAED,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,GAAG,IAAI,GAAG,IAAI;IAIrE,aAAa,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAc7C,OAAO,CAAC,WAAW;IAOnB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IA0BzD,YAAY,IAAI,OAAO;IAYvB,eAAe,IAAI,OAAO;CAG3B;AAED,wBAAgB,qBAAqB,IAAI,aAAa,CAErD;AAED,wBAAgB,OAAO,CACrB,KAAK,EAAE;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,EACjE,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAC3D,KAAK,CAgCP"}
|
package/dist/nav.js
CHANGED
|
@@ -1,261 +1,136 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Jalvin Router — Compose Navigation-style declarative routing
|
|
3
|
-
//
|
|
4
|
-
// API mirrors Jetpack Compose Navigation:
|
|
5
|
-
// val nav = rememberNavController()
|
|
6
|
-
// NavHost(navController = nav, startDestination = "home") { graph ->
|
|
7
|
-
// graph.composable("home") { HomeScreen(navController = nav) }
|
|
8
|
-
// graph.composable("profile/{userId}") { entry ->
|
|
9
|
-
// ProfileScreen(userId = entry.arguments["userId"])
|
|
10
|
-
// }
|
|
11
|
-
// }
|
|
12
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
1
|
+
// Jalvin Nav — Compose Navigation-style router (hash-based)
|
|
13
2
|
import { MutableStateFlow } from "./stateflow.js";
|
|
14
3
|
import { remember, collectAsState } from "./ui.js";
|
|
15
|
-
import { jalvinCreateElement } from "./dom.js";
|
|
16
4
|
function compilePattern(pattern) {
|
|
17
5
|
const paramNames = [];
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (i % 2 === 0) {
|
|
23
|
-
// Literal segment — escape regex metacharacters
|
|
24
|
-
regexStr += (parts[i] ?? "").replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
// Param slot — capture any non-slash sequence
|
|
28
|
-
paramNames.push(parts[i] ?? "");
|
|
29
|
-
regexStr += "([^/]+)";
|
|
30
|
-
}
|
|
31
|
-
}
|
|
6
|
+
const regexStr = pattern.replace(/\{(\w+)\}/g, (_, name) => {
|
|
7
|
+
paramNames.push(name);
|
|
8
|
+
return "([^/]+)";
|
|
9
|
+
});
|
|
32
10
|
return { regex: new RegExp(`^${regexStr}$`), paramNames };
|
|
33
11
|
}
|
|
34
12
|
function matchRoute(routes, destination) {
|
|
35
13
|
for (const route of routes) {
|
|
36
|
-
const
|
|
37
|
-
if (
|
|
14
|
+
const m = route.regex.exec(destination);
|
|
15
|
+
if (m) {
|
|
38
16
|
const args = {};
|
|
39
|
-
route.paramNames.
|
|
40
|
-
args[
|
|
41
|
-
}
|
|
17
|
+
for (let i = 0; i < route.paramNames.length; i++) {
|
|
18
|
+
args[route.paramNames[i] ?? ""] = m[i + 1] ?? "";
|
|
19
|
+
}
|
|
42
20
|
return { route: route.pattern, destination, arguments: args };
|
|
43
21
|
}
|
|
44
22
|
}
|
|
45
23
|
return null;
|
|
46
24
|
}
|
|
47
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
48
|
-
// NavGraphBuilder — the DSL block inside NavHost { graph -> ... }
|
|
49
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
50
|
-
/**
|
|
51
|
-
* Collects route definitions registered by composable() calls.
|
|
52
|
-
* Passed as the argument to the NavHost trailing-block lambda.
|
|
53
|
-
*/
|
|
54
25
|
export class NavGraphBuilder {
|
|
55
|
-
/** @internal */
|
|
56
26
|
_routes = [];
|
|
57
|
-
/**
|
|
58
|
-
* Register a route destination.
|
|
59
|
-
*
|
|
60
|
-
* @param pattern Route pattern with optional {param} placeholders,
|
|
61
|
-
* e.g. "home", "profile/{userId}", "post/{id}/comments".
|
|
62
|
-
* @param content Composable that renders this destination.
|
|
63
|
-
* Receives the BackStackEntry so it can read route arguments.
|
|
64
|
-
*/
|
|
65
27
|
composable(pattern, content) {
|
|
66
28
|
const { regex, paramNames } = compilePattern(pattern);
|
|
67
29
|
this._routes.push({ pattern, regex, paramNames, content });
|
|
68
30
|
}
|
|
69
31
|
}
|
|
70
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
71
|
-
// Hash-based URL helpers
|
|
72
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
73
|
-
function getHashDestination() {
|
|
74
|
-
if (typeof window === "undefined")
|
|
75
|
-
return "";
|
|
76
|
-
const hash = window.location.hash;
|
|
77
|
-
if (hash.startsWith("#/"))
|
|
78
|
-
return hash.slice(2);
|
|
79
|
-
if (hash.startsWith("#"))
|
|
80
|
-
return hash.slice(1);
|
|
81
|
-
return "";
|
|
82
|
-
}
|
|
83
|
-
function setHashDestination(destination) {
|
|
84
|
-
if (typeof window === "undefined")
|
|
85
|
-
return;
|
|
86
|
-
window.location.hash = destination ? "#/" + destination : "#/";
|
|
87
|
-
}
|
|
88
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
89
|
-
// NavController
|
|
90
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
91
|
-
/**
|
|
92
|
-
* Manages the navigation back stack and drives route transitions.
|
|
93
|
-
*
|
|
94
|
-
* Create one via rememberNavController() and pass it to NavHost.
|
|
95
|
-
* Then thread it to screens that need to trigger navigation.
|
|
96
|
-
*/
|
|
97
32
|
export class NavController {
|
|
98
|
-
_backStack =
|
|
99
|
-
|
|
100
|
-
currentBackStackEntry;
|
|
101
|
-
// The resolver is updated by NavHost on every render so it always reflects
|
|
102
|
-
// the current route table (in case routes are defined dynamically).
|
|
33
|
+
_backStack = [];
|
|
34
|
+
_currentEntry;
|
|
103
35
|
_resolver = null;
|
|
104
36
|
constructor() {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
this.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
37
|
+
this._currentEntry = new MutableStateFlow(null);
|
|
38
|
+
}
|
|
39
|
+
get currentBackStackEntry() {
|
|
40
|
+
return this._currentEntry;
|
|
41
|
+
}
|
|
42
|
+
_setResolver(resolver) {
|
|
43
|
+
this._resolver = resolver;
|
|
44
|
+
}
|
|
45
|
+
_initFromHash(startDestination) {
|
|
46
|
+
const hash = typeof window !== "undefined" ? window.location.hash : "";
|
|
47
|
+
const dest = hash.startsWith("#/") ? hash.slice(2) : startDestination;
|
|
48
|
+
this._navigateTo(dest);
|
|
112
49
|
if (typeof window !== "undefined") {
|
|
113
50
|
window.addEventListener("hashchange", () => {
|
|
114
|
-
|
|
51
|
+
const h = window.location.hash;
|
|
52
|
+
const d = h.startsWith("#/") ? h.slice(2) : startDestination;
|
|
53
|
+
this._navigateTo(d);
|
|
115
54
|
});
|
|
116
55
|
}
|
|
117
56
|
}
|
|
118
|
-
// Resolves a destination string → BackStackEntry and pushes it, unless
|
|
119
|
-
// we're already there.
|
|
120
57
|
_navigateTo(destination) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
const current = this.currentBackStackEntry.value;
|
|
124
|
-
if (current?.destination === destination)
|
|
58
|
+
const entry = this._resolver ? this._resolver(destination) : null;
|
|
59
|
+
if (!entry)
|
|
125
60
|
return;
|
|
126
|
-
|
|
127
|
-
this.
|
|
61
|
+
this._backStack.push(entry);
|
|
62
|
+
this._currentEntry.value = entry;
|
|
128
63
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
this._backStack.update((stack) => {
|
|
140
|
-
// Find the last occurrence of the pattern in the stack
|
|
141
|
-
let idx = -1;
|
|
142
|
-
for (let i = stack.length - 1; i >= 0; i--) {
|
|
143
|
-
if (stack[i]?.route === routePattern) {
|
|
144
|
-
idx = i;
|
|
64
|
+
navigate(destination, options) {
|
|
65
|
+
if (options?.launchSingleTop && this._currentEntry.value?.destination === destination) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (options?.popUpTo) {
|
|
69
|
+
const targetRoute = options.popUpTo;
|
|
70
|
+
let idx = this._backStack.length - 1;
|
|
71
|
+
while (idx >= 0) {
|
|
72
|
+
const e = this._backStack[idx];
|
|
73
|
+
if (e && e.route === targetRoute)
|
|
145
74
|
break;
|
|
146
|
-
|
|
75
|
+
idx--;
|
|
76
|
+
}
|
|
77
|
+
if (idx >= 0) {
|
|
78
|
+
const removeFrom = options.popUpToInclusive ? idx : idx + 1;
|
|
79
|
+
this._backStack.splice(removeFrom);
|
|
147
80
|
}
|
|
148
|
-
if (idx === -1)
|
|
149
|
-
return stack;
|
|
150
|
-
return inclusive ? stack.slice(0, idx) : stack.slice(0, idx + 1);
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Navigate to a destination.
|
|
155
|
-
*
|
|
156
|
-
* @param destination The literal path to navigate to, e.g. "profile/42".
|
|
157
|
-
* This is the *destination* string, not the route pattern.
|
|
158
|
-
*/
|
|
159
|
-
navigate(destination, options) {
|
|
160
|
-
if (options?.popUpTo !== undefined) {
|
|
161
|
-
this._popTo(options.popUpTo, options.popUpToInclusive ?? false);
|
|
162
81
|
}
|
|
163
|
-
if (
|
|
164
|
-
|
|
165
|
-
return;
|
|
82
|
+
if (typeof window !== "undefined") {
|
|
83
|
+
window.location.hash = `#/${destination}`;
|
|
166
84
|
}
|
|
167
|
-
|
|
168
|
-
setHashDestination(destination);
|
|
169
|
-
// If the hash was already at this destination, hashchange won't fire,
|
|
170
|
-
// so we push directly.
|
|
171
|
-
if (prevHash === destination) {
|
|
85
|
+
else {
|
|
172
86
|
this._navigateTo(destination);
|
|
173
87
|
}
|
|
174
88
|
}
|
|
175
|
-
/**
|
|
176
|
-
* Pop the current destination off the back stack (the system back action).
|
|
177
|
-
* Returns true if navigation happened, false if the stack had only one entry.
|
|
178
|
-
*/
|
|
179
89
|
popBackStack() {
|
|
180
|
-
|
|
181
|
-
if (stack.length <= 1)
|
|
90
|
+
if (this._backStack.length <= 1)
|
|
182
91
|
return false;
|
|
183
|
-
|
|
184
|
-
this._backStack.
|
|
185
|
-
|
|
92
|
+
this._backStack.pop();
|
|
93
|
+
const prev = this._backStack[this._backStack.length - 1] ?? null;
|
|
94
|
+
this._currentEntry.value = prev;
|
|
95
|
+
if (prev && typeof window !== "undefined") {
|
|
96
|
+
// replaceState does not fire hashchange, so no re-push into _backStack
|
|
97
|
+
history.replaceState(null, "", `#/${prev.destination}`);
|
|
98
|
+
}
|
|
186
99
|
return true;
|
|
187
100
|
}
|
|
188
|
-
/** Returns true if there is a previous destination to pop to. */
|
|
189
101
|
canPopBackStack() {
|
|
190
|
-
return this._backStack.
|
|
102
|
+
return this._backStack.length > 1;
|
|
191
103
|
}
|
|
192
104
|
}
|
|
193
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
194
|
-
// rememberNavController
|
|
195
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
196
|
-
/**
|
|
197
|
-
* Creates a NavController and remembers it across recompositions.
|
|
198
|
-
* Call this at the root of your component tree.
|
|
199
|
-
*/
|
|
200
105
|
export function rememberNavController() {
|
|
201
106
|
return remember(() => new NavController());
|
|
202
107
|
}
|
|
203
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
204
|
-
// NavHost
|
|
205
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
206
|
-
/**
|
|
207
|
-
* The root navigation composable. Renders whichever route matches the current
|
|
208
|
-
* destination in the NavController's back stack.
|
|
209
|
-
*
|
|
210
|
-
* The children block receives a NavGraphBuilder and should call
|
|
211
|
-
* graph.composable() to register each destination:
|
|
212
|
-
*
|
|
213
|
-
* NavHost(navController = nav, startDestination = "home") { graph ->
|
|
214
|
-
* graph.composable("home") { HomeScreen(navController = nav) }
|
|
215
|
-
* graph.composable("profile/{userId}") { entry ->
|
|
216
|
-
* ProfileScreen(userId = entry.arguments["userId"], navController = nav)
|
|
217
|
-
* }
|
|
218
|
-
* }
|
|
219
|
-
*
|
|
220
|
-
* In compiled TypeScript the children array will contain a single function
|
|
221
|
-
* (graph: NavGraphBuilder) => void that populates the builder.
|
|
222
|
-
*/
|
|
223
108
|
export function NavHost(props, children) {
|
|
224
109
|
const { navController, startDestination } = props;
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
110
|
+
const builder = remember(() => {
|
|
111
|
+
const b = new NavGraphBuilder();
|
|
112
|
+
if (children) {
|
|
113
|
+
for (const child of children) {
|
|
114
|
+
if (typeof child === "function")
|
|
115
|
+
child(b);
|
|
116
|
+
}
|
|
231
117
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
// Resolver: maps a raw destination string to a BackStackEntry using the route table.
|
|
235
|
-
// Falls back to a synthetic entry (triggers 404 render) if no pattern matches.
|
|
236
|
-
const resolve = (destination) => matchRoute(routes, destination) ?? {
|
|
237
|
-
route: destination,
|
|
238
|
-
destination,
|
|
239
|
-
arguments: {},
|
|
240
|
-
};
|
|
241
|
-
// Keep the resolver current so hashchange events always use the latest routes.
|
|
242
|
-
navController._setResolver(resolve);
|
|
243
|
-
// Seed the initial destination once on mount.
|
|
118
|
+
return b;
|
|
119
|
+
});
|
|
244
120
|
remember(() => {
|
|
121
|
+
navController._setResolver((dest) => matchRoute(builder._routes, dest));
|
|
245
122
|
navController._initFromHash(startDestination);
|
|
246
123
|
return true;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
// Still initializing; render nothing.
|
|
252
|
-
return jalvinCreateElement("div", { style: { display: "none" } });
|
|
124
|
+
});
|
|
125
|
+
const entry = collectAsState(navController.currentBackStackEntry);
|
|
126
|
+
if (!entry) {
|
|
127
|
+
return { tag: "div", props: {}, children: [] };
|
|
253
128
|
}
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
|
|
129
|
+
for (const route of builder._routes) {
|
|
130
|
+
if (route.regex.test(entry.destination)) {
|
|
131
|
+
return route.content(entry);
|
|
132
|
+
}
|
|
257
133
|
}
|
|
258
|
-
|
|
259
|
-
return jalvinCreateElement("div", { style: { padding: "16px", color: "#c00", fontFamily: "monospace" } }, `404 — no route matched "${current.destination}"`);
|
|
134
|
+
return { tag: "div", props: {}, children: [] };
|
|
260
135
|
}
|
|
261
136
|
//# sourceMappingURL=nav.js.map
|
package/dist/nav.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nav.js","sourceRoot":"","sources":["../src/nav.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"nav.js","sourceRoot":"","sources":["../src/nav.ts"],"names":[],"mappings":"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"}
|
package/dist/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoDhD,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC;CACV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE7D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,GAAE,SAAS,OAAO,EAAO,GAAG,CAAC,CAmB9E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAErE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAQvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACtB,IAAI,CAKN;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,EAAE,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GACrB,IAAI,CAKN;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAE/C;AAID,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAIjE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAInE;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,eAAe,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC;CAClC;AAgBD,wBAAgB,wBAAwB,IAAI,oBAAoB,CAE/D;AAED,wBAAgB,uBAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,GAAG,CAE7E;AAID,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC;;GAEG;AACH,wBAAgB,MAAM,CAAC,aAAa,EAAE,MAAM,KAAK,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAkC/E"}
|
package/dist/ui.js
CHANGED
|
@@ -19,7 +19,6 @@ class StateHolder {
|
|
|
19
19
|
}
|
|
20
20
|
set value(next) {
|
|
21
21
|
if (!Object.is(this._value, next)) {
|
|
22
|
-
console.log(`[State ${this.id}] Value changing:`, this._value, "->", next, "| Notifying", this.subscribers.size, "subscribers");
|
|
23
22
|
this._value = next;
|
|
24
23
|
this.notify();
|
|
25
24
|
}
|
|
@@ -143,7 +142,6 @@ export function render(rootComponent, container) {
|
|
|
143
142
|
let oldVNode = container._jalvin_vnode || null;
|
|
144
143
|
const update = () => {
|
|
145
144
|
renderCount++;
|
|
146
|
-
console.log(`[RENDER] Cycle ${renderCount} starting...`);
|
|
147
145
|
activeSubscriber = update;
|
|
148
146
|
resetHooks();
|
|
149
147
|
// Save current active element (focus) and selection
|
|
@@ -166,7 +164,6 @@ export function render(rootComponent, container) {
|
|
|
166
164
|
toFocus.focus();
|
|
167
165
|
}
|
|
168
166
|
activeSubscriber = null;
|
|
169
|
-
console.log(`[RENDER] Cycle ${renderCount} finished.`);
|
|
170
167
|
};
|
|
171
168
|
update();
|
|
172
169
|
}
|
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oDAAoD;AACpD,gFAAgF;AAQhF,IAAI,gBAAgB,GAAsB,IAAI,CAAC;AAC/C,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAE7B,MAAM,WAAW;IACP,MAAM,CAAI;IACV,WAAW,GAAG,IAAI,GAAG,EAAc,CAAC;IAC3B,EAAE,GAAG,EAAE,oBAAoB,CAAC;IAE7C,YAAY,OAAU;QACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACP,IAAI,gBAAgB,EAAE,CAAC;YACrB,qEAAqE;YACrE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,IAAO;QACf,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;YAClC,
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"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"}
|