@jalvin/runtime 2.0.43 → 2.0.45
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 +4 -0
- package/dist/bibi.d.ts.map +1 -1
- package/dist/bibi.js +11 -9
- package/dist/bibi.js.map +1 -1
- package/dist/coroutines.js +22 -47
- package/dist/coroutines.js.map +1 -1
- package/dist/dom.d.ts +15 -0
- package/dist/dom.d.ts.map +1 -0
- package/dist/dom.js +212 -0
- package/dist/dom.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -224
- package/dist/index.js.map +1 -1
- package/dist/nav.d.ts +48 -0
- package/dist/nav.d.ts.map +1 -0
- package/dist/nav.js +136 -0
- package/dist/nav.js.map +1 -0
- package/dist/stateflow.js +8 -19
- package/dist/stateflow.js.map +1 -1
- package/dist/stdlib/collections.js +55 -108
- package/dist/stdlib/collections.js.map +1 -1
- package/dist/stdlib/conversions.d.ts +2 -0
- package/dist/stdlib/conversions.d.ts.map +1 -1
- package/dist/stdlib/conversions.js +17 -29
- package/dist/stdlib/conversions.js.map +1 -1
- package/dist/stdlib/delegates.js +14 -28
- package/dist/stdlib/delegates.js.map +1 -1
- package/dist/stdlib/equality.js +1 -4
- package/dist/stdlib/equality.js.map +1 -1
- package/dist/stdlib/index.js +12 -28
- package/dist/stdlib/index.js.map +1 -1
- package/dist/stdlib/io.js +2 -6
- package/dist/stdlib/io.js.map +1 -1
- package/dist/stdlib/math.js +29 -37
- package/dist/stdlib/math.js.map +1 -1
- package/dist/stdlib/random.js +3 -8
- package/dist/stdlib/random.js.map +1 -1
- package/dist/stdlib/regex.js +4 -8
- package/dist/stdlib/regex.js.map +1 -1
- package/dist/stdlib/result.js +3 -9
- package/dist/stdlib/result.js.map +1 -1
- package/dist/stdlib/strings.js +24 -51
- package/dist/stdlib/strings.js.map +1 -1
- package/dist/stdlib/timing.js +3 -8
- package/dist/stdlib/timing.js.map +1 -1
- package/dist/stdlib/types.js +13 -29
- package/dist/stdlib/types.js.map +1 -1
- package/dist/ui.d.ts +12 -69
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +127 -228
- package/dist/ui.js.map +1 -1
- package/package.json +1 -1
package/dist/stdlib/strings.js
CHANGED
|
@@ -1,56 +1,30 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
3
2
|
// stdlib/strings.ts — String utilities and StringBuilder
|
|
4
3
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
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;
|
|
30
4
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
31
5
|
// String predicates
|
|
32
6
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
33
|
-
function isBlank(s) {
|
|
7
|
+
export function isBlank(s) {
|
|
34
8
|
return s.trim().length === 0;
|
|
35
9
|
}
|
|
36
|
-
function isNotBlank(s) {
|
|
10
|
+
export function isNotBlank(s) {
|
|
37
11
|
return s.trim().length > 0;
|
|
38
12
|
}
|
|
39
|
-
function isNullOrBlank(s) {
|
|
13
|
+
export function isNullOrBlank(s) {
|
|
40
14
|
return s == null || s.trim().length === 0;
|
|
41
15
|
}
|
|
42
16
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
43
17
|
// Parsing with fallback
|
|
44
18
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
45
|
-
function toIntOrNull(s) {
|
|
19
|
+
export function toIntOrNull(s) {
|
|
46
20
|
const n = parseInt(s, 10);
|
|
47
21
|
return isNaN(n) ? null : n;
|
|
48
22
|
}
|
|
49
|
-
function toDoubleOrNull(s) {
|
|
23
|
+
export function toDoubleOrNull(s) {
|
|
50
24
|
const n = parseFloat(s);
|
|
51
25
|
return isNaN(n) ? null : n;
|
|
52
26
|
}
|
|
53
|
-
function toBooleanOrNull(s) {
|
|
27
|
+
export function toBooleanOrNull(s) {
|
|
54
28
|
if (s.toLowerCase() === "true")
|
|
55
29
|
return true;
|
|
56
30
|
if (s.toLowerCase() === "false")
|
|
@@ -60,71 +34,71 @@ function toBooleanOrNull(s) {
|
|
|
60
34
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
61
35
|
// Padding and repetition
|
|
62
36
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
63
|
-
function padStart(s, length, padChar = " ") {
|
|
37
|
+
export function padStart(s, length, padChar = " ") {
|
|
64
38
|
return s.padStart(length, padChar);
|
|
65
39
|
}
|
|
66
|
-
function padEnd(s, length, padChar = " ") {
|
|
40
|
+
export function padEnd(s, length, padChar = " ") {
|
|
67
41
|
return s.padEnd(length, padChar);
|
|
68
42
|
}
|
|
69
|
-
function repeat_(s, n) {
|
|
43
|
+
export function repeat_(s, n) {
|
|
70
44
|
return s.repeat(n);
|
|
71
45
|
}
|
|
72
46
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
73
47
|
// Case and casing helpers
|
|
74
48
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
75
|
-
function capitalize(s) {
|
|
49
|
+
export function capitalize(s) {
|
|
76
50
|
return s.length === 0 ? s : s[0].toUpperCase() + s.slice(1);
|
|
77
51
|
}
|
|
78
|
-
function decapitalize(s) {
|
|
52
|
+
export function decapitalize(s) {
|
|
79
53
|
return s.length === 0 ? s : s[0].toLowerCase() + s.slice(1);
|
|
80
54
|
}
|
|
81
55
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
82
56
|
// Substring extraction
|
|
83
57
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
84
|
-
function substringBefore(s, delimiter) {
|
|
58
|
+
export function substringBefore(s, delimiter) {
|
|
85
59
|
const idx = s.indexOf(delimiter);
|
|
86
60
|
return idx === -1 ? s : s.slice(0, idx);
|
|
87
61
|
}
|
|
88
|
-
function substringAfter(s, delimiter) {
|
|
62
|
+
export function substringAfter(s, delimiter) {
|
|
89
63
|
const idx = s.indexOf(delimiter);
|
|
90
64
|
return idx === -1 ? "" : s.slice(idx + delimiter.length);
|
|
91
65
|
}
|
|
92
|
-
function substringBeforeLast(s, delimiter) {
|
|
66
|
+
export function substringBeforeLast(s, delimiter) {
|
|
93
67
|
const idx = s.lastIndexOf(delimiter);
|
|
94
68
|
return idx === -1 ? s : s.slice(0, idx);
|
|
95
69
|
}
|
|
96
|
-
function substringAfterLast(s, delimiter) {
|
|
70
|
+
export function substringAfterLast(s, delimiter) {
|
|
97
71
|
const idx = s.lastIndexOf(delimiter);
|
|
98
72
|
return idx === -1 ? "" : s.slice(idx + delimiter.length);
|
|
99
73
|
}
|
|
100
|
-
function removePrefix(s, prefix) {
|
|
74
|
+
export function removePrefix(s, prefix) {
|
|
101
75
|
return s.startsWith(prefix) ? s.slice(prefix.length) : s;
|
|
102
76
|
}
|
|
103
|
-
function removeSuffix(s, suffix) {
|
|
77
|
+
export function removeSuffix(s, suffix) {
|
|
104
78
|
return s.endsWith(suffix) ? s.slice(0, s.length - suffix.length) : s;
|
|
105
79
|
}
|
|
106
80
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
107
81
|
// Line splitting
|
|
108
82
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
109
|
-
function lines(s) {
|
|
83
|
+
export function lines(s) {
|
|
110
84
|
return s.split(/\r?\n/);
|
|
111
85
|
}
|
|
112
|
-
function lineSequence(s) {
|
|
86
|
+
export function lineSequence(s) {
|
|
113
87
|
return lines(s);
|
|
114
88
|
}
|
|
115
89
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
116
90
|
// Default-if-empty helpers
|
|
117
91
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
118
|
-
function ifEmpty(value, default_) {
|
|
92
|
+
export function ifEmpty(value, default_) {
|
|
119
93
|
return (value == null || value.length === 0) ? default_() : value;
|
|
120
94
|
}
|
|
121
|
-
function ifBlank(value, default_) {
|
|
95
|
+
export function ifBlank(value, default_) {
|
|
122
96
|
return (value == null || value.trim().length === 0) ? default_() : value;
|
|
123
97
|
}
|
|
124
98
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
125
99
|
// Indent trimming — strips the common leading whitespace from all lines
|
|
126
100
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
127
|
-
function trimIndent(s) {
|
|
101
|
+
export function trimIndent(s) {
|
|
128
102
|
const allLines = s.split("\n");
|
|
129
103
|
const nonEmpty = allLines.filter((l) => l.trim().length > 0);
|
|
130
104
|
const minIndent = nonEmpty.reduce((min, l) => {
|
|
@@ -141,7 +115,7 @@ function trimIndent(s) {
|
|
|
141
115
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
142
116
|
// StringBuilder — mutable string builder for efficient concatenation
|
|
143
117
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
144
|
-
class StringBuilder {
|
|
118
|
+
export class StringBuilder {
|
|
145
119
|
_parts = [];
|
|
146
120
|
append(s) { this._parts.push(String(s ?? "")); return this; }
|
|
147
121
|
appendLine(s = "") { this._parts.push(String(s), "\n"); return this; }
|
|
@@ -152,8 +126,7 @@ class StringBuilder {
|
|
|
152
126
|
isNotEmpty() { return this.length > 0; }
|
|
153
127
|
toString() { return this._parts.join(""); }
|
|
154
128
|
}
|
|
155
|
-
|
|
156
|
-
function buildString(fn) {
|
|
129
|
+
export function buildString(fn) {
|
|
157
130
|
const sb = new StringBuilder();
|
|
158
131
|
fn(sb);
|
|
159
132
|
return sb.toString();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.js","sourceRoot":"","sources":["../../src/stdlib/strings.ts"],"names":[],"mappings":"
|
|
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,25 +1,20 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
3
2
|
// stdlib/timing.ts — Performance measurement utilities
|
|
4
3
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.measureTimeMillis = measureTimeMillis;
|
|
7
|
-
exports.measureTimeMillisAsync = measureTimeMillisAsync;
|
|
8
|
-
exports.measureTimedValue = measureTimedValue;
|
|
9
4
|
/** Measures how long a synchronous block takes in milliseconds. */
|
|
10
|
-
function measureTimeMillis(fn) {
|
|
5
|
+
export function measureTimeMillis(fn) {
|
|
11
6
|
const start = performance.now();
|
|
12
7
|
fn();
|
|
13
8
|
return Math.round(performance.now() - start);
|
|
14
9
|
}
|
|
15
10
|
/** Measures how long an async block takes in milliseconds. */
|
|
16
|
-
async function measureTimeMillisAsync(fn) {
|
|
11
|
+
export async function measureTimeMillisAsync(fn) {
|
|
17
12
|
const start = performance.now();
|
|
18
13
|
await fn();
|
|
19
14
|
return Math.round(performance.now() - start);
|
|
20
15
|
}
|
|
21
16
|
/** Runs a block and returns both its result and the elapsed time. */
|
|
22
|
-
function measureTimedValue(fn) {
|
|
17
|
+
export function measureTimedValue(fn) {
|
|
23
18
|
const start = performance.now();
|
|
24
19
|
const value = fn();
|
|
25
20
|
return { value, duration: Math.round(performance.now() - start) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/stdlib/timing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/stdlib/timing.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uDAAuD;AACvD,gFAAgF;AAQhF,mEAAmE;AACnE,MAAM,UAAU,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;AAC9D,MAAM,CAAC,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,MAAM,UAAU,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,82 +1,66 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
3
2
|
// stdlib/types.ts — Null safety, preconditions, and exception classes
|
|
4
3
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
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;
|
|
14
4
|
/**
|
|
15
5
|
* `notNull(value)` — emitted for Jalvin's `!!` operator.
|
|
16
6
|
* Throws if value is null/undefined, otherwise returns the value.
|
|
17
7
|
*/
|
|
18
|
-
function notNull(value) {
|
|
8
|
+
export function notNull(value) {
|
|
19
9
|
if (value === null || value === undefined) {
|
|
20
10
|
throw new NullPointerException("!! operator invoked on null or undefined value");
|
|
21
11
|
}
|
|
22
12
|
return value;
|
|
23
13
|
}
|
|
24
|
-
class NullPointerException extends Error {
|
|
14
|
+
export class NullPointerException extends Error {
|
|
25
15
|
constructor(message = "Value was null") {
|
|
26
16
|
super(message);
|
|
27
17
|
this.name = "NullPointerException";
|
|
28
18
|
}
|
|
29
19
|
}
|
|
30
|
-
exports.NullPointerException = NullPointerException;
|
|
31
20
|
/**
|
|
32
21
|
* `safeCast<T>(value, Type)` — emitted for Jalvin's `as?` operator.
|
|
33
22
|
* Returns the value if it's an instanceof Type, otherwise returns null.
|
|
34
23
|
*/
|
|
35
|
-
function safeCast(value,
|
|
24
|
+
export function safeCast(value,
|
|
36
25
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
26
|
Type) {
|
|
38
27
|
return value instanceof Type ? value : null;
|
|
39
28
|
}
|
|
40
|
-
function checkNotNull(value, message = "Value must not be null") {
|
|
29
|
+
export function checkNotNull(value, message = "Value must not be null") {
|
|
41
30
|
return notNull(value) ?? (() => { throw new NullPointerException(message); })();
|
|
42
31
|
}
|
|
43
|
-
function requireNotNull(value, message = "Required value was null") {
|
|
32
|
+
export function requireNotNull(value, message = "Required value was null") {
|
|
44
33
|
return notNull(value);
|
|
45
34
|
}
|
|
46
|
-
function requireCondition(condition, message = "Requirement failed") {
|
|
35
|
+
export function requireCondition(condition, message = "Requirement failed") {
|
|
47
36
|
if (!condition) {
|
|
48
37
|
throw new IllegalArgumentException(typeof message === "function" ? message() : message);
|
|
49
38
|
}
|
|
50
39
|
}
|
|
51
|
-
function check(condition, message = "Check failed") {
|
|
40
|
+
export function check(condition, message = "Check failed") {
|
|
52
41
|
if (!condition) {
|
|
53
42
|
throw new IllegalStateException(typeof message === "function" ? message() : message);
|
|
54
43
|
}
|
|
55
44
|
}
|
|
56
|
-
function error(message) {
|
|
45
|
+
export function error(message) {
|
|
57
46
|
throw new IllegalStateException(message);
|
|
58
47
|
}
|
|
59
48
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
60
49
|
// Standard exception hierarchy
|
|
61
50
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
62
|
-
class IllegalArgumentException extends Error {
|
|
51
|
+
export class IllegalArgumentException extends Error {
|
|
63
52
|
constructor(message) { super(message); this.name = "IllegalArgumentException"; }
|
|
64
53
|
}
|
|
65
|
-
|
|
66
|
-
class IllegalStateException extends Error {
|
|
54
|
+
export class IllegalStateException extends Error {
|
|
67
55
|
constructor(message) { super(message); this.name = "IllegalStateException"; }
|
|
68
56
|
}
|
|
69
|
-
|
|
70
|
-
class UnsupportedOperationException extends Error {
|
|
57
|
+
export class UnsupportedOperationException extends Error {
|
|
71
58
|
constructor(message = "Operation is not supported") { super(message); this.name = "UnsupportedOperationException"; }
|
|
72
59
|
}
|
|
73
|
-
|
|
74
|
-
class IndexOutOfBoundsException extends Error {
|
|
60
|
+
export class IndexOutOfBoundsException extends Error {
|
|
75
61
|
constructor(message = "Index out of bounds") { super(message); this.name = "IndexOutOfBoundsException"; }
|
|
76
62
|
}
|
|
77
|
-
|
|
78
|
-
class NoSuchElementException extends Error {
|
|
63
|
+
export class NoSuchElementException extends Error {
|
|
79
64
|
constructor(message = "No such element") { super(message); this.name = "NoSuchElementException"; }
|
|
80
65
|
}
|
|
81
|
-
exports.NoSuchElementException = NoSuchElementException;
|
|
82
66
|
//# 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":"
|
|
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,101 +1,44 @@
|
|
|
1
1
|
import type { StateFlow } from "./stateflow.js";
|
|
2
|
-
import { ViewModel } from "./stateflow.js";
|
|
3
2
|
export interface MutableState<T> {
|
|
4
3
|
value: T;
|
|
5
4
|
}
|
|
6
5
|
/**
|
|
7
|
-
*
|
|
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
|
|
6
|
+
* Returns a reactive state holder.
|
|
14
7
|
*/
|
|
15
8
|
export declare function mutableStateOf<T>(initial: T): MutableState<T>;
|
|
16
9
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* val scope = remember { CoroutineScope() }
|
|
10
|
+
* Persists a value across re-renders.
|
|
20
11
|
*/
|
|
21
12
|
export declare function remember<T>(compute: () => T, deps?: readonly unknown[]): T;
|
|
22
13
|
/**
|
|
23
|
-
*
|
|
14
|
+
* Convenience wrapper.
|
|
24
15
|
*/
|
|
25
16
|
export declare function rememberMutableStateOf<T>(initial: T): MutableState<T>;
|
|
26
17
|
/**
|
|
27
|
-
* Collects a StateFlow into
|
|
28
|
-
* the flow emits a new value.
|
|
29
|
-
*
|
|
30
|
-
* val currentName by viewModel.name.collectAsState()
|
|
18
|
+
* Collects a StateFlow into reactive state, persisting the subscription across renders.
|
|
31
19
|
*/
|
|
32
20
|
export declare function collectAsState<T>(flow: StateFlow<T>): T;
|
|
33
21
|
/**
|
|
34
|
-
*
|
|
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
|
-
* }
|
|
22
|
+
* Runs an effect tied to "component" execution.
|
|
45
23
|
*/
|
|
46
24
|
export declare function LaunchedEffect(deps: readonly unknown[], fn: () => Promise<void>): void;
|
|
47
25
|
export declare function DisposableEffect(deps: readonly unknown[], fn: () => (() => void)): void;
|
|
48
26
|
export declare function SideEffect(fn: () => void): void;
|
|
49
27
|
export type WindowSizeClass = "Compact" | "Medium" | "Expanded";
|
|
50
|
-
/** @internal — exported for testing */
|
|
51
28
|
export declare function widthToSizeClass(widthPx: number): WindowSizeClass;
|
|
52
|
-
/** @internal — exported for testing */
|
|
53
29
|
export declare function heightToSizeClass(heightPx: number): WindowSizeClass;
|
|
54
30
|
export interface WindowSizeClassState {
|
|
55
31
|
widthSizeClass: WindowSizeClass;
|
|
56
32
|
heightSizeClass: WindowSizeClass;
|
|
57
33
|
}
|
|
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
|
-
*/
|
|
34
|
+
export declare function calculateWindowSizeClass(): WindowSizeClassState;
|
|
74
35
|
export declare function WindowSizeClassProvider({ children }: {
|
|
75
|
-
children?:
|
|
76
|
-
}):
|
|
36
|
+
children?: any;
|
|
37
|
+
}): any;
|
|
38
|
+
export { viewModel as useViewModel } from "./stateflow.js";
|
|
39
|
+
import type { VNode } from "./dom.js";
|
|
77
40
|
/**
|
|
78
|
-
*
|
|
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
|
-
* ```
|
|
41
|
+
* Mounts a Jalvin component to the DOM and sets up the re-render loop.
|
|
99
42
|
*/
|
|
100
|
-
export declare function
|
|
43
|
+
export declare function render(rootComponent: () => VNode, container: HTMLElement): void;
|
|
101
44
|
//# 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":"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"}
|