@jalvin/runtime 2.0.41 → 2.0.43
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/bibi.d.ts +0 -4
- package/dist/bibi.d.ts.map +1 -1
- package/dist/bibi.js +9 -11
- package/dist/bibi.js.map +1 -1
- package/dist/coroutines.js +47 -22
- package/dist/coroutines.js.map +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +224 -20
- package/dist/index.js.map +1 -1
- package/dist/stateflow.js +19 -8
- package/dist/stateflow.js.map +1 -1
- package/dist/stdlib/collections.js +108 -55
- package/dist/stdlib/collections.js.map +1 -1
- package/dist/stdlib/conversions.d.ts +0 -2
- package/dist/stdlib/conversions.d.ts.map +1 -1
- package/dist/stdlib/conversions.js +29 -17
- package/dist/stdlib/conversions.js.map +1 -1
- package/dist/stdlib/delegates.js +28 -14
- package/dist/stdlib/delegates.js.map +1 -1
- package/dist/stdlib/equality.js +4 -1
- package/dist/stdlib/equality.js.map +1 -1
- package/dist/stdlib/index.js +28 -12
- package/dist/stdlib/index.js.map +1 -1
- package/dist/stdlib/io.js +6 -2
- package/dist/stdlib/io.js.map +1 -1
- package/dist/stdlib/math.js +37 -29
- package/dist/stdlib/math.js.map +1 -1
- package/dist/stdlib/random.js +8 -3
- package/dist/stdlib/random.js.map +1 -1
- package/dist/stdlib/regex.js +8 -4
- package/dist/stdlib/regex.js.map +1 -1
- package/dist/stdlib/result.js +9 -3
- package/dist/stdlib/result.js.map +1 -1
- package/dist/stdlib/strings.js +51 -24
- package/dist/stdlib/strings.js.map +1 -1
- package/dist/stdlib/timing.js +8 -3
- package/dist/stdlib/timing.js.map +1 -1
- package/dist/stdlib/types.js +29 -13
- package/dist/stdlib/types.js.map +1 -1
- package/dist/ui.d.ts +69 -12
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +228 -130
- package/dist/ui.js.map +1 -1
- package/package.json +1 -1
- package/dist/dom.d.ts +0 -15
- package/dist/dom.d.ts.map +0 -1
- package/dist/dom.js +0 -212
- package/dist/dom.js.map +0 -1
- package/dist/nav.d.ts +0 -104
- package/dist/nav.d.ts.map +0 -1
- package/dist/nav.js +0 -261
- package/dist/nav.js.map +0 -1
package/dist/stdlib/strings.js
CHANGED
|
@@ -1,30 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
2
3
|
// stdlib/strings.ts — String utilities and StringBuilder
|
|
3
4
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.StringBuilder = void 0;
|
|
7
|
+
exports.isBlank = isBlank;
|
|
8
|
+
exports.isNotBlank = isNotBlank;
|
|
9
|
+
exports.isNullOrBlank = isNullOrBlank;
|
|
10
|
+
exports.toIntOrNull = toIntOrNull;
|
|
11
|
+
exports.toDoubleOrNull = toDoubleOrNull;
|
|
12
|
+
exports.toBooleanOrNull = toBooleanOrNull;
|
|
13
|
+
exports.padStart = padStart;
|
|
14
|
+
exports.padEnd = padEnd;
|
|
15
|
+
exports.repeat_ = repeat_;
|
|
16
|
+
exports.capitalize = capitalize;
|
|
17
|
+
exports.decapitalize = decapitalize;
|
|
18
|
+
exports.substringBefore = substringBefore;
|
|
19
|
+
exports.substringAfter = substringAfter;
|
|
20
|
+
exports.substringBeforeLast = substringBeforeLast;
|
|
21
|
+
exports.substringAfterLast = substringAfterLast;
|
|
22
|
+
exports.removePrefix = removePrefix;
|
|
23
|
+
exports.removeSuffix = removeSuffix;
|
|
24
|
+
exports.lines = lines;
|
|
25
|
+
exports.lineSequence = lineSequence;
|
|
26
|
+
exports.ifEmpty = ifEmpty;
|
|
27
|
+
exports.ifBlank = ifBlank;
|
|
28
|
+
exports.trimIndent = trimIndent;
|
|
29
|
+
exports.buildString = buildString;
|
|
4
30
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
31
|
// String predicates
|
|
6
32
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
7
|
-
|
|
33
|
+
function isBlank(s) {
|
|
8
34
|
return s.trim().length === 0;
|
|
9
35
|
}
|
|
10
|
-
|
|
36
|
+
function isNotBlank(s) {
|
|
11
37
|
return s.trim().length > 0;
|
|
12
38
|
}
|
|
13
|
-
|
|
39
|
+
function isNullOrBlank(s) {
|
|
14
40
|
return s == null || s.trim().length === 0;
|
|
15
41
|
}
|
|
16
42
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
17
43
|
// Parsing with fallback
|
|
18
44
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
19
|
-
|
|
45
|
+
function toIntOrNull(s) {
|
|
20
46
|
const n = parseInt(s, 10);
|
|
21
47
|
return isNaN(n) ? null : n;
|
|
22
48
|
}
|
|
23
|
-
|
|
49
|
+
function toDoubleOrNull(s) {
|
|
24
50
|
const n = parseFloat(s);
|
|
25
51
|
return isNaN(n) ? null : n;
|
|
26
52
|
}
|
|
27
|
-
|
|
53
|
+
function toBooleanOrNull(s) {
|
|
28
54
|
if (s.toLowerCase() === "true")
|
|
29
55
|
return true;
|
|
30
56
|
if (s.toLowerCase() === "false")
|
|
@@ -34,71 +60,71 @@ export function toBooleanOrNull(s) {
|
|
|
34
60
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
35
61
|
// Padding and repetition
|
|
36
62
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
37
|
-
|
|
63
|
+
function padStart(s, length, padChar = " ") {
|
|
38
64
|
return s.padStart(length, padChar);
|
|
39
65
|
}
|
|
40
|
-
|
|
66
|
+
function padEnd(s, length, padChar = " ") {
|
|
41
67
|
return s.padEnd(length, padChar);
|
|
42
68
|
}
|
|
43
|
-
|
|
69
|
+
function repeat_(s, n) {
|
|
44
70
|
return s.repeat(n);
|
|
45
71
|
}
|
|
46
72
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
47
73
|
// Case and casing helpers
|
|
48
74
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
49
|
-
|
|
75
|
+
function capitalize(s) {
|
|
50
76
|
return s.length === 0 ? s : s[0].toUpperCase() + s.slice(1);
|
|
51
77
|
}
|
|
52
|
-
|
|
78
|
+
function decapitalize(s) {
|
|
53
79
|
return s.length === 0 ? s : s[0].toLowerCase() + s.slice(1);
|
|
54
80
|
}
|
|
55
81
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
56
82
|
// Substring extraction
|
|
57
83
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
58
|
-
|
|
84
|
+
function substringBefore(s, delimiter) {
|
|
59
85
|
const idx = s.indexOf(delimiter);
|
|
60
86
|
return idx === -1 ? s : s.slice(0, idx);
|
|
61
87
|
}
|
|
62
|
-
|
|
88
|
+
function substringAfter(s, delimiter) {
|
|
63
89
|
const idx = s.indexOf(delimiter);
|
|
64
90
|
return idx === -1 ? "" : s.slice(idx + delimiter.length);
|
|
65
91
|
}
|
|
66
|
-
|
|
92
|
+
function substringBeforeLast(s, delimiter) {
|
|
67
93
|
const idx = s.lastIndexOf(delimiter);
|
|
68
94
|
return idx === -1 ? s : s.slice(0, idx);
|
|
69
95
|
}
|
|
70
|
-
|
|
96
|
+
function substringAfterLast(s, delimiter) {
|
|
71
97
|
const idx = s.lastIndexOf(delimiter);
|
|
72
98
|
return idx === -1 ? "" : s.slice(idx + delimiter.length);
|
|
73
99
|
}
|
|
74
|
-
|
|
100
|
+
function removePrefix(s, prefix) {
|
|
75
101
|
return s.startsWith(prefix) ? s.slice(prefix.length) : s;
|
|
76
102
|
}
|
|
77
|
-
|
|
103
|
+
function removeSuffix(s, suffix) {
|
|
78
104
|
return s.endsWith(suffix) ? s.slice(0, s.length - suffix.length) : s;
|
|
79
105
|
}
|
|
80
106
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
81
107
|
// Line splitting
|
|
82
108
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
83
|
-
|
|
109
|
+
function lines(s) {
|
|
84
110
|
return s.split(/\r?\n/);
|
|
85
111
|
}
|
|
86
|
-
|
|
112
|
+
function lineSequence(s) {
|
|
87
113
|
return lines(s);
|
|
88
114
|
}
|
|
89
115
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
90
116
|
// Default-if-empty helpers
|
|
91
117
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
92
|
-
|
|
118
|
+
function ifEmpty(value, default_) {
|
|
93
119
|
return (value == null || value.length === 0) ? default_() : value;
|
|
94
120
|
}
|
|
95
|
-
|
|
121
|
+
function ifBlank(value, default_) {
|
|
96
122
|
return (value == null || value.trim().length === 0) ? default_() : value;
|
|
97
123
|
}
|
|
98
124
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
99
125
|
// Indent trimming — strips the common leading whitespace from all lines
|
|
100
126
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
101
|
-
|
|
127
|
+
function trimIndent(s) {
|
|
102
128
|
const allLines = s.split("\n");
|
|
103
129
|
const nonEmpty = allLines.filter((l) => l.trim().length > 0);
|
|
104
130
|
const minIndent = nonEmpty.reduce((min, l) => {
|
|
@@ -115,7 +141,7 @@ export function trimIndent(s) {
|
|
|
115
141
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
116
142
|
// StringBuilder — mutable string builder for efficient concatenation
|
|
117
143
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
118
|
-
|
|
144
|
+
class StringBuilder {
|
|
119
145
|
_parts = [];
|
|
120
146
|
append(s) { this._parts.push(String(s ?? "")); return this; }
|
|
121
147
|
appendLine(s = "") { this._parts.push(String(s), "\n"); return this; }
|
|
@@ -126,7 +152,8 @@ export class StringBuilder {
|
|
|
126
152
|
isNotEmpty() { return this.length > 0; }
|
|
127
153
|
toString() { return this._parts.join(""); }
|
|
128
154
|
}
|
|
129
|
-
|
|
155
|
+
exports.StringBuilder = StringBuilder;
|
|
156
|
+
function buildString(fn) {
|
|
130
157
|
const sb = new StringBuilder();
|
|
131
158
|
fn(sb);
|
|
132
159
|
return sb.toString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.js","sourceRoot":"","sources":["../../src/stdlib/strings.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yDAAyD;AACzD,gFAAgF;
|
|
1
|
+
{"version":3,"file":"strings.js","sourceRoot":"","sources":["../../src/stdlib/strings.ts"],"names":[],"mappings":"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"}
|
package/dist/stdlib/timing.js
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
2
3
|
// stdlib/timing.ts — Performance measurement utilities
|
|
3
4
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.measureTimeMillis = measureTimeMillis;
|
|
7
|
+
exports.measureTimeMillisAsync = measureTimeMillisAsync;
|
|
8
|
+
exports.measureTimedValue = measureTimedValue;
|
|
4
9
|
/** Measures how long a synchronous block takes in milliseconds. */
|
|
5
|
-
|
|
10
|
+
function measureTimeMillis(fn) {
|
|
6
11
|
const start = performance.now();
|
|
7
12
|
fn();
|
|
8
13
|
return Math.round(performance.now() - start);
|
|
9
14
|
}
|
|
10
15
|
/** Measures how long an async block takes in milliseconds. */
|
|
11
|
-
|
|
16
|
+
async function measureTimeMillisAsync(fn) {
|
|
12
17
|
const start = performance.now();
|
|
13
18
|
await fn();
|
|
14
19
|
return Math.round(performance.now() - start);
|
|
15
20
|
}
|
|
16
21
|
/** Runs a block and returns both its result and the elapsed time. */
|
|
17
|
-
|
|
22
|
+
function measureTimedValue(fn) {
|
|
18
23
|
const start = performance.now();
|
|
19
24
|
const value = fn();
|
|
20
25
|
return { value, duration: Math.round(performance.now() - start) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/stdlib/timing.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uDAAuD;AACvD,gFAAgF;
|
|
1
|
+
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/stdlib/timing.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,uDAAuD;AACvD,gFAAgF;;AAShF,8CAIC;AAGD,wDAIC;AAGD,8CAIC;AAnBD,mEAAmE;AACnE,SAAgB,iBAAiB,CAAC,EAAc;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,EAAE,EAAE,CAAC;IACL,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,8DAA8D;AACvD,KAAK,UAAU,sBAAsB,CAAC,EAAuB;IAClE,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,EAAE,EAAE,CAAC;IACX,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,qEAAqE;AACrE,SAAgB,iBAAiB,CAAI,EAAW;IAC9C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;IACnB,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;AACpE,CAAC"}
|
package/dist/stdlib/types.js
CHANGED
|
@@ -1,66 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
2
3
|
// stdlib/types.ts — Null safety, preconditions, and exception classes
|
|
3
4
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NoSuchElementException = exports.IndexOutOfBoundsException = exports.UnsupportedOperationException = exports.IllegalStateException = exports.IllegalArgumentException = exports.NullPointerException = void 0;
|
|
7
|
+
exports.notNull = notNull;
|
|
8
|
+
exports.safeCast = safeCast;
|
|
9
|
+
exports.checkNotNull = checkNotNull;
|
|
10
|
+
exports.requireNotNull = requireNotNull;
|
|
11
|
+
exports.requireCondition = requireCondition;
|
|
12
|
+
exports.check = check;
|
|
13
|
+
exports.error = error;
|
|
4
14
|
/**
|
|
5
15
|
* `notNull(value)` — emitted for Jalvin's `!!` operator.
|
|
6
16
|
* Throws if value is null/undefined, otherwise returns the value.
|
|
7
17
|
*/
|
|
8
|
-
|
|
18
|
+
function notNull(value) {
|
|
9
19
|
if (value === null || value === undefined) {
|
|
10
20
|
throw new NullPointerException("!! operator invoked on null or undefined value");
|
|
11
21
|
}
|
|
12
22
|
return value;
|
|
13
23
|
}
|
|
14
|
-
|
|
24
|
+
class NullPointerException extends Error {
|
|
15
25
|
constructor(message = "Value was null") {
|
|
16
26
|
super(message);
|
|
17
27
|
this.name = "NullPointerException";
|
|
18
28
|
}
|
|
19
29
|
}
|
|
30
|
+
exports.NullPointerException = NullPointerException;
|
|
20
31
|
/**
|
|
21
32
|
* `safeCast<T>(value, Type)` — emitted for Jalvin's `as?` operator.
|
|
22
33
|
* Returns the value if it's an instanceof Type, otherwise returns null.
|
|
23
34
|
*/
|
|
24
|
-
|
|
35
|
+
function safeCast(value,
|
|
25
36
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
26
37
|
Type) {
|
|
27
38
|
return value instanceof Type ? value : null;
|
|
28
39
|
}
|
|
29
|
-
|
|
40
|
+
function checkNotNull(value, message = "Value must not be null") {
|
|
30
41
|
return notNull(value) ?? (() => { throw new NullPointerException(message); })();
|
|
31
42
|
}
|
|
32
|
-
|
|
43
|
+
function requireNotNull(value, message = "Required value was null") {
|
|
33
44
|
return notNull(value);
|
|
34
45
|
}
|
|
35
|
-
|
|
46
|
+
function requireCondition(condition, message = "Requirement failed") {
|
|
36
47
|
if (!condition) {
|
|
37
48
|
throw new IllegalArgumentException(typeof message === "function" ? message() : message);
|
|
38
49
|
}
|
|
39
50
|
}
|
|
40
|
-
|
|
51
|
+
function check(condition, message = "Check failed") {
|
|
41
52
|
if (!condition) {
|
|
42
53
|
throw new IllegalStateException(typeof message === "function" ? message() : message);
|
|
43
54
|
}
|
|
44
55
|
}
|
|
45
|
-
|
|
56
|
+
function error(message) {
|
|
46
57
|
throw new IllegalStateException(message);
|
|
47
58
|
}
|
|
48
59
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
49
60
|
// Standard exception hierarchy
|
|
50
61
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
51
|
-
|
|
62
|
+
class IllegalArgumentException extends Error {
|
|
52
63
|
constructor(message) { super(message); this.name = "IllegalArgumentException"; }
|
|
53
64
|
}
|
|
54
|
-
|
|
65
|
+
exports.IllegalArgumentException = IllegalArgumentException;
|
|
66
|
+
class IllegalStateException extends Error {
|
|
55
67
|
constructor(message) { super(message); this.name = "IllegalStateException"; }
|
|
56
68
|
}
|
|
57
|
-
|
|
69
|
+
exports.IllegalStateException = IllegalStateException;
|
|
70
|
+
class UnsupportedOperationException extends Error {
|
|
58
71
|
constructor(message = "Operation is not supported") { super(message); this.name = "UnsupportedOperationException"; }
|
|
59
72
|
}
|
|
60
|
-
|
|
73
|
+
exports.UnsupportedOperationException = UnsupportedOperationException;
|
|
74
|
+
class IndexOutOfBoundsException extends Error {
|
|
61
75
|
constructor(message = "Index out of bounds") { super(message); this.name = "IndexOutOfBoundsException"; }
|
|
62
76
|
}
|
|
63
|
-
|
|
77
|
+
exports.IndexOutOfBoundsException = IndexOutOfBoundsException;
|
|
78
|
+
class NoSuchElementException extends Error {
|
|
64
79
|
constructor(message = "No such element") { super(message); this.name = "NoSuchElementException"; }
|
|
65
80
|
}
|
|
81
|
+
exports.NoSuchElementException = NoSuchElementException;
|
|
66
82
|
//# sourceMappingURL=types.js.map
|
package/dist/stdlib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/stdlib/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,sEAAsE;AACtE,gFAAgF;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/stdlib/types.ts"],"names":[],"mappings":"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"}
|
package/dist/ui.d.ts
CHANGED
|
@@ -1,44 +1,101 @@
|
|
|
1
1
|
import type { StateFlow } from "./stateflow.js";
|
|
2
|
+
import { ViewModel } from "./stateflow.js";
|
|
2
3
|
export interface MutableState<T> {
|
|
3
4
|
value: T;
|
|
4
5
|
}
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
+
* Hoisted `mutableStateOf(initial)` inside a `component fun`.
|
|
8
|
+
* Returns a mutable object whose `.value` setter triggers a re-render.
|
|
9
|
+
*
|
|
10
|
+
* Compiled output:
|
|
11
|
+
* val count = mutableStateOf(0)
|
|
12
|
+
* → const count = mutableStateOf(0);
|
|
13
|
+
* // count.value to read; count.value = x to update
|
|
7
14
|
*/
|
|
8
15
|
export declare function mutableStateOf<T>(initial: T): MutableState<T>;
|
|
9
16
|
/**
|
|
10
|
-
*
|
|
17
|
+
* Compute an expensive value once and remember it.
|
|
18
|
+
*
|
|
19
|
+
* val scope = remember { CoroutineScope() }
|
|
11
20
|
*/
|
|
12
21
|
export declare function remember<T>(compute: () => T, deps?: readonly unknown[]): T;
|
|
13
22
|
/**
|
|
14
|
-
*
|
|
23
|
+
* `remember { mutableStateOf(0) }` — convenience wrapper.
|
|
15
24
|
*/
|
|
16
25
|
export declare function rememberMutableStateOf<T>(initial: T): MutableState<T>;
|
|
17
26
|
/**
|
|
18
|
-
* Collects a StateFlow into
|
|
27
|
+
* Collects a StateFlow into React state. The component re-renders when
|
|
28
|
+
* the flow emits a new value.
|
|
29
|
+
*
|
|
30
|
+
* val currentName by viewModel.name.collectAsState()
|
|
19
31
|
*/
|
|
20
32
|
export declare function collectAsState<T>(flow: StateFlow<T>): T;
|
|
21
33
|
/**
|
|
22
|
-
*
|
|
34
|
+
* Returns a shared ViewModel instance for the given key.
|
|
35
|
+
*
|
|
36
|
+
* val vm = useViewModel("CounterVm") { CounterViewModel() }
|
|
37
|
+
*/
|
|
38
|
+
export declare function useViewModel<T extends ViewModel>(key: string, factory: () => T): T;
|
|
39
|
+
/**
|
|
40
|
+
* Runs a suspend block when deps change. Cancels on unmount.
|
|
41
|
+
*
|
|
42
|
+
* LaunchedEffect(Unit) {
|
|
43
|
+
* repeat(10) { delay(1_000) }
|
|
44
|
+
* }
|
|
23
45
|
*/
|
|
24
46
|
export declare function LaunchedEffect(deps: readonly unknown[], fn: () => Promise<void>): void;
|
|
25
47
|
export declare function DisposableEffect(deps: readonly unknown[], fn: () => (() => void)): void;
|
|
26
48
|
export declare function SideEffect(fn: () => void): void;
|
|
27
49
|
export type WindowSizeClass = "Compact" | "Medium" | "Expanded";
|
|
50
|
+
/** @internal — exported for testing */
|
|
28
51
|
export declare function widthToSizeClass(widthPx: number): WindowSizeClass;
|
|
52
|
+
/** @internal — exported for testing */
|
|
29
53
|
export declare function heightToSizeClass(heightPx: number): WindowSizeClass;
|
|
30
54
|
export interface WindowSizeClassState {
|
|
31
55
|
widthSizeClass: WindowSizeClass;
|
|
32
56
|
heightSizeClass: WindowSizeClass;
|
|
33
57
|
}
|
|
34
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Mount once at the app root. Registers a single `resize` listener and
|
|
60
|
+
* distributes the current {@link WindowSizeClassState} to all descendants
|
|
61
|
+
* that call {@link calculateWindowSizeClass}.
|
|
62
|
+
*
|
|
63
|
+
* The vite-plugin entry module wraps the root component in this provider
|
|
64
|
+
* automatically when the `entry` option is used.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```jalvin
|
|
68
|
+
* // main entry
|
|
69
|
+
* root.render(
|
|
70
|
+
* WindowSizeClassProvider { MyApp() }
|
|
71
|
+
* )
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
35
74
|
export declare function WindowSizeClassProvider({ children }: {
|
|
36
|
-
children?:
|
|
37
|
-
}):
|
|
38
|
-
export { viewModel as useViewModel } from "./stateflow.js";
|
|
39
|
-
import type { VNode } from "./dom.js";
|
|
75
|
+
children?: import("react").ReactNode;
|
|
76
|
+
}): import("react").ReactElement;
|
|
40
77
|
/**
|
|
41
|
-
*
|
|
78
|
+
* Returns the current {@link WindowSizeClassState}. Re-renders only when the
|
|
79
|
+
* window crosses a breakpoint boundary.
|
|
80
|
+
*
|
|
81
|
+
* Requires {@link WindowSizeClassProvider} to be mounted somewhere above this
|
|
82
|
+
* component in the tree (the vite-plugin does this automatically). If no
|
|
83
|
+
* provider is found the hook falls back to "Expanded/Medium" and logs a
|
|
84
|
+
* warning in development.
|
|
85
|
+
*
|
|
86
|
+
* Mirrors `calculateWindowSizeClass()` from Compose Material3 Adaptive.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```jalvin
|
|
90
|
+
* component fun AdaptiveLayout() {
|
|
91
|
+
* val windowSize = calculateWindowSizeClass()
|
|
92
|
+
* if (windowSize.widthSizeClass == "Compact") {
|
|
93
|
+
* MobileLayout()
|
|
94
|
+
* } else {
|
|
95
|
+
* DesktopLayout()
|
|
96
|
+
* }
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
42
99
|
*/
|
|
43
|
-
export declare function
|
|
100
|
+
export declare function calculateWindowSizeClass(): WindowSizeClassState;
|
|
44
101
|
//# sourceMappingURL=ui.d.ts.map
|
package/dist/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAyC,MAAM,gBAAgB,CAAC;AAMlF,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,KAAK,EAAE,CAAC,CAAC;CACV;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CA0B7D;AAMD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,GAAE,SAAS,OAAO,EAAO,GAAG,CAAC,CAG9E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAIrE;AAMD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CASvD;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,EAC9C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,GACf,CAAC,CASH;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACtB,IAAI,CAWN;AAMD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,EAAE,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,GACrB,IAAI,CAON;AAMD,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAG/C;AAWD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhE,uCAAuC;AACvC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAIjE;AAED,uCAAuC;AACvC,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAInE;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,eAAe,CAAC;IAChC,eAAe,EAAE,eAAe,CAAC;CAClC;AAyBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,OAAO,EAAE,SAAS,CAAA;CAAE,GACrD,OAAO,OAAO,EAAE,YAAY,CA2B9B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,IAAI,oBAAoB,CAG/D"}
|