@maxhealth.tech/prefab 0.1.2
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 +51 -0
- package/LICENSE +21 -0
- package/README.md +340 -0
- package/dist/actions/client.d.ts +98 -0
- package/dist/actions/client.d.ts.map +1 -0
- package/dist/actions/client.js +188 -0
- package/dist/actions/client.js.map +1 -0
- package/dist/actions/index.d.ts +6 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +3 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/mcp.d.ts +37 -0
- package/dist/actions/mcp.d.ts.map +1 -0
- package/dist/actions/mcp.js +64 -0
- package/dist/actions/mcp.js.map +1 -0
- package/dist/actions/types.d.ts +16 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/actions/types.js +8 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/app.d.ts +65 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +120 -0
- package/dist/app.js.map +1 -0
- package/dist/auto/chart.d.ts +36 -0
- package/dist/auto/chart.d.ts.map +1 -0
- package/dist/auto/chart.js +50 -0
- package/dist/auto/chart.js.map +1 -0
- package/dist/auto/comparison.d.ts +32 -0
- package/dist/auto/comparison.d.ts.map +1 -0
- package/dist/auto/comparison.js +66 -0
- package/dist/auto/comparison.js.map +1 -0
- package/dist/auto/form.d.ts +50 -0
- package/dist/auto/form.d.ts.map +1 -0
- package/dist/auto/form.js +68 -0
- package/dist/auto/form.js.map +1 -0
- package/dist/auto/index.d.ts +84 -0
- package/dist/auto/index.d.ts.map +1 -0
- package/dist/auto/index.js +240 -0
- package/dist/auto/index.js.map +1 -0
- package/dist/auto/metrics.d.ts +44 -0
- package/dist/auto/metrics.d.ts.map +1 -0
- package/dist/auto/metrics.js +55 -0
- package/dist/auto/metrics.js.map +1 -0
- package/dist/auto/progress.d.ts +38 -0
- package/dist/auto/progress.d.ts.map +1 -0
- package/dist/auto/progress.js +72 -0
- package/dist/auto/progress.js.map +1 -0
- package/dist/auto/timeline.d.ts +41 -0
- package/dist/auto/timeline.d.ts.map +1 -0
- package/dist/auto/timeline.js +72 -0
- package/dist/auto/timeline.js.map +1 -0
- package/dist/components/alert/index.d.ts +14 -0
- package/dist/components/alert/index.d.ts.map +1 -0
- package/dist/components/alert/index.js +31 -0
- package/dist/components/alert/index.js.map +1 -0
- package/dist/components/card/index.d.ts +12 -0
- package/dist/components/card/index.d.ts.map +1 -0
- package/dist/components/card/index.js +33 -0
- package/dist/components/card/index.js.map +1 -0
- package/dist/components/charts/index.d.ts +57 -0
- package/dist/components/charts/index.d.ts.map +1 -0
- package/dist/components/charts/index.js +91 -0
- package/dist/components/charts/index.js.map +1 -0
- package/dist/components/control/index.d.ts +48 -0
- package/dist/components/control/index.d.ts.map +1 -0
- package/dist/components/control/index.js +47 -0
- package/dist/components/control/index.js.map +1 -0
- package/dist/components/data/index.d.ts +53 -0
- package/dist/components/data/index.d.ts.map +1 -0
- package/dist/components/data/index.js +88 -0
- package/dist/components/data/index.js.map +1 -0
- package/dist/components/form/index.d.ts +103 -0
- package/dist/components/form/index.d.ts.map +1 -0
- package/dist/components/form/index.js +247 -0
- package/dist/components/form/index.js.map +1 -0
- package/dist/components/interactive/index.d.ts +33 -0
- package/dist/components/interactive/index.d.ts.map +1 -0
- package/dist/components/interactive/index.js +59 -0
- package/dist/components/interactive/index.js.map +1 -0
- package/dist/components/layout/index.d.ts +61 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/index.js +86 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/media/index.d.ts +17 -0
- package/dist/components/media/index.d.ts.map +1 -0
- package/dist/components/media/index.js +41 -0
- package/dist/components/media/index.js.map +1 -0
- package/dist/components/table/index.d.ts +28 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/table/index.js +56 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/typography/index.d.ts +34 -0
- package/dist/components/typography/index.d.ts.map +1 -0
- package/dist/components/typography/index.js +93 -0
- package/dist/components/typography/index.js.map +1 -0
- package/dist/core/component.d.ts +67 -0
- package/dist/core/component.d.ts.map +1 -0
- package/dist/core/component.js +122 -0
- package/dist/core/component.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +3 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/validate.d.ts +30 -0
- package/dist/core/validate.d.ts.map +1 -0
- package/dist/core/validate.js +178 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/display.d.ts +102 -0
- package/dist/mcp/display.d.ts.map +1 -0
- package/dist/mcp/display.js +124 -0
- package/dist/mcp/display.js.map +1 -0
- package/dist/mcp/index.d.ts +7 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/types.d.ts +35 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +8 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/renderer/actions.d.ts +36 -0
- package/dist/renderer/actions.d.ts.map +1 -0
- package/dist/renderer/actions.js +296 -0
- package/dist/renderer/actions.js.map +1 -0
- package/dist/renderer/app.d.ts +87 -0
- package/dist/renderer/app.d.ts.map +1 -0
- package/dist/renderer/app.js +166 -0
- package/dist/renderer/app.js.map +1 -0
- package/dist/renderer/bridge.d.ts +91 -0
- package/dist/renderer/bridge.d.ts.map +1 -0
- package/dist/renderer/bridge.js +302 -0
- package/dist/renderer/bridge.js.map +1 -0
- package/dist/renderer/components/alert.d.ts +5 -0
- package/dist/renderer/components/alert.d.ts.map +1 -0
- package/dist/renderer/components/alert.js +44 -0
- package/dist/renderer/components/alert.js.map +1 -0
- package/dist/renderer/components/card.d.ts +5 -0
- package/dist/renderer/components/card.d.ts.map +1 -0
- package/dist/renderer/components/card.js +38 -0
- package/dist/renderer/components/card.js.map +1 -0
- package/dist/renderer/components/charts.d.ts +8 -0
- package/dist/renderer/components/charts.d.ts.map +1 -0
- package/dist/renderer/components/charts.js +232 -0
- package/dist/renderer/components/charts.js.map +1 -0
- package/dist/renderer/components/control.d.ts +5 -0
- package/dist/renderer/components/control.d.ts.map +1 -0
- package/dist/renderer/components/control.js +140 -0
- package/dist/renderer/components/control.js.map +1 -0
- package/dist/renderer/components/data.d.ts +5 -0
- package/dist/renderer/components/data.d.ts.map +1 -0
- package/dist/renderer/components/data.js +268 -0
- package/dist/renderer/components/data.js.map +1 -0
- package/dist/renderer/components/form.d.ts +5 -0
- package/dist/renderer/components/form.d.ts.map +1 -0
- package/dist/renderer/components/form.js +523 -0
- package/dist/renderer/components/form.js.map +1 -0
- package/dist/renderer/components/index.d.ts +5 -0
- package/dist/renderer/components/index.d.ts.map +1 -0
- package/dist/renderer/components/index.js +32 -0
- package/dist/renderer/components/index.js.map +1 -0
- package/dist/renderer/components/interactive.d.ts +5 -0
- package/dist/renderer/components/interactive.d.ts.map +1 -0
- package/dist/renderer/components/interactive.js +324 -0
- package/dist/renderer/components/interactive.js.map +1 -0
- package/dist/renderer/components/layout.d.ts +5 -0
- package/dist/renderer/components/layout.d.ts.map +1 -0
- package/dist/renderer/components/layout.js +113 -0
- package/dist/renderer/components/layout.js.map +1 -0
- package/dist/renderer/components/media.d.ts +5 -0
- package/dist/renderer/components/media.d.ts.map +1 -0
- package/dist/renderer/components/media.js +132 -0
- package/dist/renderer/components/media.js.map +1 -0
- package/dist/renderer/components/table.d.ts +5 -0
- package/dist/renderer/components/table.d.ts.map +1 -0
- package/dist/renderer/components/table.js +101 -0
- package/dist/renderer/components/table.js.map +1 -0
- package/dist/renderer/components/typography.d.ts +5 -0
- package/dist/renderer/components/typography.d.ts.map +1 -0
- package/dist/renderer/components/typography.js +90 -0
- package/dist/renderer/components/typography.js.map +1 -0
- package/dist/renderer/engine.d.ts +53 -0
- package/dist/renderer/engine.d.ts.map +1 -0
- package/dist/renderer/engine.js +112 -0
- package/dist/renderer/engine.js.map +1 -0
- package/dist/renderer/index.d.ts +94 -0
- package/dist/renderer/index.d.ts.map +1 -0
- package/dist/renderer/index.js +215 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/rx.d.ts +37 -0
- package/dist/renderer/rx.d.ts.map +1 -0
- package/dist/renderer/rx.js +360 -0
- package/dist/renderer/rx.js.map +1 -0
- package/dist/renderer/state.d.ts +34 -0
- package/dist/renderer/state.d.ts.map +1 -0
- package/dist/renderer/state.js +132 -0
- package/dist/renderer/state.js.map +1 -0
- package/dist/renderer/theme.d.ts +13 -0
- package/dist/renderer/theme.d.ts.map +1 -0
- package/dist/renderer/theme.js +69 -0
- package/dist/renderer/theme.js.map +1 -0
- package/dist/renderer/transport.d.ts +22 -0
- package/dist/renderer/transport.d.ts.map +1 -0
- package/dist/renderer/transport.js +69 -0
- package/dist/renderer/transport.js.map +1 -0
- package/dist/renderer.min.js +83 -0
- package/dist/rx/index.d.ts +2 -0
- package/dist/rx/index.d.ts.map +1 -0
- package/dist/rx/index.js +2 -0
- package/dist/rx/index.js.map +1 -0
- package/dist/rx/rx.d.ts +81 -0
- package/dist/rx/rx.d.ts.map +1 -0
- package/dist/rx/rx.js +196 -0
- package/dist/rx/rx.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rx/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/rx/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rx/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/rx/rx.d.ts
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rx — Reactive expression builder.
|
|
3
|
+
*
|
|
4
|
+
* Builds template expressions like "{{ count + 1 }}" or "{{ user.name }}"
|
|
5
|
+
* that are evaluated client-side by the prefab renderer.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* rx('count') → "{{ count }}"
|
|
9
|
+
* rx('count').add(1) → "{{ count + 1 }}"
|
|
10
|
+
* rx('user').dot('name') → "{{ user.name }}"
|
|
11
|
+
* rx('items').length() → "{{ items | length }}"
|
|
12
|
+
* rx('price').currency('USD') → "{{ price | currency:'USD' }}"
|
|
13
|
+
* rx('active').then('Yes', 'No') → "{{ active ? 'Yes' : 'No' }}"
|
|
14
|
+
*/
|
|
15
|
+
export declare class Rx {
|
|
16
|
+
private readonly expr;
|
|
17
|
+
constructor(expression: string);
|
|
18
|
+
/** Raw expression string without {{ }} wrapper */
|
|
19
|
+
get expression(): string;
|
|
20
|
+
/** Serialize to "{{ expression }}" template string */
|
|
21
|
+
toString(): string;
|
|
22
|
+
toJSON(): string;
|
|
23
|
+
/** Dot-path access: rx('user').dot('name') → "{{ user.name }}" */
|
|
24
|
+
dot(key: string): Rx;
|
|
25
|
+
/** Index access: rx('items').at(0) → "{{ items.0 }}" */
|
|
26
|
+
at(index: number | Rx): Rx;
|
|
27
|
+
add(other: number | string | Rx): Rx;
|
|
28
|
+
sub(other: number | string | Rx): Rx;
|
|
29
|
+
mul(other: number | string | Rx): Rx;
|
|
30
|
+
div(other: number | string | Rx): Rx;
|
|
31
|
+
mod(other: number | string | Rx): Rx;
|
|
32
|
+
eq(other: unknown): Rx;
|
|
33
|
+
neq(other: unknown): Rx;
|
|
34
|
+
gt(other: number | Rx): Rx;
|
|
35
|
+
gte(other: number | Rx): Rx;
|
|
36
|
+
lt(other: number | Rx): Rx;
|
|
37
|
+
lte(other: number | Rx): Rx;
|
|
38
|
+
and(other: Rx): Rx;
|
|
39
|
+
or(other: Rx): Rx;
|
|
40
|
+
not(): Rx;
|
|
41
|
+
then(ifTrue: unknown, ifFalse: unknown): Rx;
|
|
42
|
+
currency(code?: string): Rx;
|
|
43
|
+
percent(decimals?: number): Rx;
|
|
44
|
+
number(decimals?: number): Rx;
|
|
45
|
+
round(decimals?: number): Rx;
|
|
46
|
+
compact(decimals?: number): Rx;
|
|
47
|
+
abs(): Rx;
|
|
48
|
+
date(format?: string): Rx;
|
|
49
|
+
time(): Rx;
|
|
50
|
+
datetime(): Rx;
|
|
51
|
+
upper(): Rx;
|
|
52
|
+
lower(): Rx;
|
|
53
|
+
truncate(maxLength: number): Rx;
|
|
54
|
+
pluralize(word?: string): Rx;
|
|
55
|
+
length(): Rx;
|
|
56
|
+
join(separator?: string): Rx;
|
|
57
|
+
first(): Rx;
|
|
58
|
+
last(): Rx;
|
|
59
|
+
selectattr(attr: string): Rx;
|
|
60
|
+
rejectattr(attr: string): Rx;
|
|
61
|
+
default(value: unknown): Rx;
|
|
62
|
+
private pipe;
|
|
63
|
+
}
|
|
64
|
+
/** Create an Rx expression referencing a state key */
|
|
65
|
+
export declare function rx(key: string): Rx;
|
|
66
|
+
/** Current item in a ForEach loop */
|
|
67
|
+
export declare const ITEM: Rx;
|
|
68
|
+
/** Current index in a ForEach loop */
|
|
69
|
+
export declare const INDEX: Rx;
|
|
70
|
+
/** Value from an interaction event (input value, checkbox state, etc.) */
|
|
71
|
+
export declare const EVENT: Rx;
|
|
72
|
+
/** Error message available in on_error callbacks */
|
|
73
|
+
export declare const ERROR: Rx;
|
|
74
|
+
/** Return value available in on_success callbacks */
|
|
75
|
+
export declare const RESULT: Rx;
|
|
76
|
+
/**
|
|
77
|
+
* STATE proxy — convenience for accessing state keys.
|
|
78
|
+
* Usage: STATE.foo → rx('foo'), STATE.user.name → rx('user.name')
|
|
79
|
+
*/
|
|
80
|
+
export declare const STATE: Record<string, Rx>;
|
|
81
|
+
//# sourceMappingURL=rx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rx.d.ts","sourceRoot":"","sources":["../../src/rx/rx.ts"],"names":[],"mappings":"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"}
|
package/dist/rx/rx.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rx — Reactive expression builder.
|
|
3
|
+
*
|
|
4
|
+
* Builds template expressions like "{{ count + 1 }}" or "{{ user.name }}"
|
|
5
|
+
* that are evaluated client-side by the prefab renderer.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* rx('count') → "{{ count }}"
|
|
9
|
+
* rx('count').add(1) → "{{ count + 1 }}"
|
|
10
|
+
* rx('user').dot('name') → "{{ user.name }}"
|
|
11
|
+
* rx('items').length() → "{{ items | length }}"
|
|
12
|
+
* rx('price').currency('USD') → "{{ price | currency:'USD' }}"
|
|
13
|
+
* rx('active').then('Yes', 'No') → "{{ active ? 'Yes' : 'No' }}"
|
|
14
|
+
*/
|
|
15
|
+
export class Rx {
|
|
16
|
+
expr;
|
|
17
|
+
constructor(expression) {
|
|
18
|
+
this.expr = expression;
|
|
19
|
+
}
|
|
20
|
+
// ── Core ─────────────────────────────────────────────────────────────────
|
|
21
|
+
/** Raw expression string without {{ }} wrapper */
|
|
22
|
+
get expression() {
|
|
23
|
+
return this.expr;
|
|
24
|
+
}
|
|
25
|
+
/** Serialize to "{{ expression }}" template string */
|
|
26
|
+
toString() {
|
|
27
|
+
return `{{ ${this.expr} }}`;
|
|
28
|
+
}
|
|
29
|
+
toJSON() {
|
|
30
|
+
return this.toString();
|
|
31
|
+
}
|
|
32
|
+
// ── Property access ──────────────────────────────────────────────────────
|
|
33
|
+
/** Dot-path access: rx('user').dot('name') → "{{ user.name }}" */
|
|
34
|
+
dot(key) {
|
|
35
|
+
return new Rx(`${this.expr}.${key}`);
|
|
36
|
+
}
|
|
37
|
+
/** Index access: rx('items').at(0) → "{{ items.0 }}" */
|
|
38
|
+
at(index) {
|
|
39
|
+
const idx = index instanceof Rx ? `{{ ${index.expr} }}` : String(index);
|
|
40
|
+
return new Rx(`${this.expr}.${idx}`);
|
|
41
|
+
}
|
|
42
|
+
// ── Arithmetic ───────────────────────────────────────────────────────────
|
|
43
|
+
add(other) {
|
|
44
|
+
return new Rx(`${this.expr} + ${formatOperand(other)}`);
|
|
45
|
+
}
|
|
46
|
+
sub(other) {
|
|
47
|
+
return new Rx(`${this.expr} - ${formatOperand(other)}`);
|
|
48
|
+
}
|
|
49
|
+
mul(other) {
|
|
50
|
+
return new Rx(`${this.expr} * ${formatOperand(other)}`);
|
|
51
|
+
}
|
|
52
|
+
div(other) {
|
|
53
|
+
return new Rx(`${this.expr} / ${formatOperand(other)}`);
|
|
54
|
+
}
|
|
55
|
+
mod(other) {
|
|
56
|
+
return new Rx(`${this.expr} % ${formatOperand(other)}`);
|
|
57
|
+
}
|
|
58
|
+
// ── Comparison ───────────────────────────────────────────────────────────
|
|
59
|
+
eq(other) {
|
|
60
|
+
return new Rx(`${this.expr} === ${formatOperand(other)}`);
|
|
61
|
+
}
|
|
62
|
+
neq(other) {
|
|
63
|
+
return new Rx(`${this.expr} !== ${formatOperand(other)}`);
|
|
64
|
+
}
|
|
65
|
+
gt(other) {
|
|
66
|
+
return new Rx(`${this.expr} > ${formatOperand(other)}`);
|
|
67
|
+
}
|
|
68
|
+
gte(other) {
|
|
69
|
+
return new Rx(`${this.expr} >= ${formatOperand(other)}`);
|
|
70
|
+
}
|
|
71
|
+
lt(other) {
|
|
72
|
+
return new Rx(`${this.expr} < ${formatOperand(other)}`);
|
|
73
|
+
}
|
|
74
|
+
lte(other) {
|
|
75
|
+
return new Rx(`${this.expr} <= ${formatOperand(other)}`);
|
|
76
|
+
}
|
|
77
|
+
// ── Logical ──────────────────────────────────────────────────────────────
|
|
78
|
+
and(other) {
|
|
79
|
+
return new Rx(`${this.expr} && ${other.expr}`);
|
|
80
|
+
}
|
|
81
|
+
or(other) {
|
|
82
|
+
return new Rx(`${this.expr} || ${other.expr}`);
|
|
83
|
+
}
|
|
84
|
+
not() {
|
|
85
|
+
return new Rx(`!${this.expr}`);
|
|
86
|
+
}
|
|
87
|
+
// ── Ternary ──────────────────────────────────────────────────────────────
|
|
88
|
+
then(ifTrue, ifFalse) {
|
|
89
|
+
return new Rx(`${this.expr} ? ${formatOperand(ifTrue)} : ${formatOperand(ifFalse)}`);
|
|
90
|
+
}
|
|
91
|
+
// ── Pipe methods (format filters) ────────────────────────────────────────
|
|
92
|
+
currency(code) {
|
|
93
|
+
return this.pipe('currency', code);
|
|
94
|
+
}
|
|
95
|
+
percent(decimals) {
|
|
96
|
+
return this.pipe('percent', decimals);
|
|
97
|
+
}
|
|
98
|
+
number(decimals) {
|
|
99
|
+
return this.pipe('number', decimals);
|
|
100
|
+
}
|
|
101
|
+
round(decimals = 0) {
|
|
102
|
+
return this.pipe('round', decimals);
|
|
103
|
+
}
|
|
104
|
+
compact(decimals) {
|
|
105
|
+
return this.pipe('compact', decimals);
|
|
106
|
+
}
|
|
107
|
+
abs() {
|
|
108
|
+
return this.pipe('abs');
|
|
109
|
+
}
|
|
110
|
+
date(format) {
|
|
111
|
+
return this.pipe('date', format);
|
|
112
|
+
}
|
|
113
|
+
time() {
|
|
114
|
+
return this.pipe('time');
|
|
115
|
+
}
|
|
116
|
+
datetime() {
|
|
117
|
+
return this.pipe('datetime');
|
|
118
|
+
}
|
|
119
|
+
upper() {
|
|
120
|
+
return this.pipe('upper');
|
|
121
|
+
}
|
|
122
|
+
lower() {
|
|
123
|
+
return this.pipe('lower');
|
|
124
|
+
}
|
|
125
|
+
truncate(maxLength) {
|
|
126
|
+
return this.pipe('truncate', maxLength);
|
|
127
|
+
}
|
|
128
|
+
pluralize(word) {
|
|
129
|
+
return this.pipe('pluralize', word);
|
|
130
|
+
}
|
|
131
|
+
length() {
|
|
132
|
+
return this.pipe('length');
|
|
133
|
+
}
|
|
134
|
+
join(separator) {
|
|
135
|
+
return this.pipe('join', separator);
|
|
136
|
+
}
|
|
137
|
+
first() {
|
|
138
|
+
return this.pipe('first');
|
|
139
|
+
}
|
|
140
|
+
last() {
|
|
141
|
+
return this.pipe('last');
|
|
142
|
+
}
|
|
143
|
+
selectattr(attr) {
|
|
144
|
+
return this.pipe('selectattr', attr);
|
|
145
|
+
}
|
|
146
|
+
rejectattr(attr) {
|
|
147
|
+
return this.pipe('rejectattr', attr);
|
|
148
|
+
}
|
|
149
|
+
default(value) {
|
|
150
|
+
return this.pipe('default', value);
|
|
151
|
+
}
|
|
152
|
+
// ── Internal ─────────────────────────────────────────────────────────────
|
|
153
|
+
pipe(name, arg) {
|
|
154
|
+
const pipeStr = arg !== undefined ? `${name}:${formatPipeArg(arg)}` : name;
|
|
155
|
+
return new Rx(`${this.expr} | ${pipeStr}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// ── Factory ──────────────────────────────────────────────────────────────────
|
|
159
|
+
/** Create an Rx expression referencing a state key */
|
|
160
|
+
export function rx(key) {
|
|
161
|
+
return new Rx(key);
|
|
162
|
+
}
|
|
163
|
+
// ── Built-in reactive variables ──────────────────────────────────────────────
|
|
164
|
+
/** Current item in a ForEach loop */
|
|
165
|
+
export const ITEM = new Rx('$item');
|
|
166
|
+
/** Current index in a ForEach loop */
|
|
167
|
+
export const INDEX = new Rx('$index');
|
|
168
|
+
/** Value from an interaction event (input value, checkbox state, etc.) */
|
|
169
|
+
export const EVENT = new Rx('$event');
|
|
170
|
+
/** Error message available in on_error callbacks */
|
|
171
|
+
export const ERROR = new Rx('$error');
|
|
172
|
+
/** Return value available in on_success callbacks */
|
|
173
|
+
export const RESULT = new Rx('$result');
|
|
174
|
+
/**
|
|
175
|
+
* STATE proxy — convenience for accessing state keys.
|
|
176
|
+
* Usage: STATE.foo → rx('foo'), STATE.user.name → rx('user.name')
|
|
177
|
+
*/
|
|
178
|
+
export const STATE = new Proxy({}, {
|
|
179
|
+
get(_target, prop) {
|
|
180
|
+
return rx(prop);
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
184
|
+
function formatOperand(v) {
|
|
185
|
+
if (v instanceof Rx)
|
|
186
|
+
return v.expression;
|
|
187
|
+
if (typeof v === 'string')
|
|
188
|
+
return `'${v}'`;
|
|
189
|
+
return String(v);
|
|
190
|
+
}
|
|
191
|
+
function formatPipeArg(v) {
|
|
192
|
+
if (typeof v === 'string')
|
|
193
|
+
return `'${v}'`;
|
|
194
|
+
return String(v);
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=rx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rx.js","sourceRoot":"","sources":["../../src/rx/rx.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@maxhealth.tech/prefab",
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "TypeScript declarative UI component library for MCP apps. Wire-compatible with Python prefab-ui.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"./actions": {
|
|
15
|
+
"import": "./dist/actions/index.js",
|
|
16
|
+
"types": "./dist/actions/index.d.ts"
|
|
17
|
+
},
|
|
18
|
+
"./rx": {
|
|
19
|
+
"import": "./dist/rx/index.js",
|
|
20
|
+
"types": "./dist/rx/index.d.ts"
|
|
21
|
+
},
|
|
22
|
+
"./charts": {
|
|
23
|
+
"import": "./dist/components/charts/index.js",
|
|
24
|
+
"types": "./dist/components/charts/index.d.ts"
|
|
25
|
+
},
|
|
26
|
+
"./mcp": {
|
|
27
|
+
"import": "./dist/mcp/index.js",
|
|
28
|
+
"types": "./dist/mcp/index.d.ts"
|
|
29
|
+
},
|
|
30
|
+
"./renderer": {
|
|
31
|
+
"import": "./dist/renderer/index.js",
|
|
32
|
+
"types": "./dist/renderer/index.d.ts"
|
|
33
|
+
},
|
|
34
|
+
"./auto": {
|
|
35
|
+
"import": "./dist/auto/index.js",
|
|
36
|
+
"types": "./dist/auto/index.d.ts"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"sideEffects": false,
|
|
40
|
+
"files": [
|
|
41
|
+
"dist",
|
|
42
|
+
"README.md",
|
|
43
|
+
"LICENSE",
|
|
44
|
+
"CHANGELOG.md"
|
|
45
|
+
],
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "bun run scripts/build.ts",
|
|
48
|
+
"fixtures": "python test/fixtures/run_fixtures.py",
|
|
49
|
+
"pretest": "python test/fixtures/run_fixtures.py",
|
|
50
|
+
"test": "bun test",
|
|
51
|
+
"lint": "eslint src/ test/",
|
|
52
|
+
"lint:fix": "eslint src/ test/ --fix",
|
|
53
|
+
"typecheck": "tsc --noEmit",
|
|
54
|
+
"prepublishOnly": "bun run build"
|
|
55
|
+
},
|
|
56
|
+
"keywords": [
|
|
57
|
+
"mcp",
|
|
58
|
+
"prefab",
|
|
59
|
+
"ui",
|
|
60
|
+
"components",
|
|
61
|
+
"model-context-protocol",
|
|
62
|
+
"declarative-ui",
|
|
63
|
+
"fastmcp"
|
|
64
|
+
],
|
|
65
|
+
"author": "Max Health Inc",
|
|
66
|
+
"license": "MIT",
|
|
67
|
+
"repository": {
|
|
68
|
+
"type": "git",
|
|
69
|
+
"url": "https://github.com/Max-Health-Inc/prefab.git"
|
|
70
|
+
},
|
|
71
|
+
"devDependencies": {
|
|
72
|
+
"@eslint/js": "^10.0.1",
|
|
73
|
+
"@happy-dom/global-registrator": "^20.9.0",
|
|
74
|
+
"@types/bun": "^1.3.12",
|
|
75
|
+
"eslint": "^10.2.1",
|
|
76
|
+
"happy-dom": "^20.9.0",
|
|
77
|
+
"jiti": "^2.6.1",
|
|
78
|
+
"typescript": "^6.0.3",
|
|
79
|
+
"typescript-eslint": "^8.58.2"
|
|
80
|
+
},
|
|
81
|
+
"dependencies": {
|
|
82
|
+
"@modelcontextprotocol/ext-apps": "^1.6.0"
|
|
83
|
+
}
|
|
84
|
+
}
|