@lynx-js/genui 0.0.1-rc.0 → 0.0.1
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/a2ui/README.md +777 -100
- package/a2ui/dist/catalog/ChoicePicker/catalog.json +265 -0
- package/a2ui/dist/catalog/ChoicePicker/index.d.ts +56 -0
- package/a2ui/dist/catalog/ChoicePicker/index.js +66 -0
- package/a2ui/dist/catalog/ChoicePicker/index.js.map +1 -0
- package/a2ui/dist/catalog/ChoicePicker/utils.d.ts +13 -0
- package/a2ui/dist/catalog/ChoicePicker/utils.js +80 -0
- package/a2ui/dist/catalog/ChoicePicker/utils.js.map +1 -0
- package/a2ui/dist/catalog/Column/index.js +3 -7
- package/a2ui/dist/catalog/Column/index.js.map +1 -1
- package/a2ui/dist/catalog/DateTimeInput/catalog.json +165 -0
- package/a2ui/dist/catalog/DateTimeInput/index.d.ts +43 -0
- package/a2ui/dist/catalog/DateTimeInput/index.js +147 -0
- package/a2ui/dist/catalog/DateTimeInput/index.js.map +1 -0
- package/a2ui/dist/catalog/DateTimeInput/utils.d.ts +53 -0
- package/a2ui/dist/catalog/DateTimeInput/utils.js +248 -0
- package/a2ui/dist/catalog/DateTimeInput/utils.js.map +1 -0
- package/a2ui/dist/catalog/Icon/catalog.json +173 -2
- package/a2ui/dist/catalog/Icon/index.d.ts +2 -2
- package/a2ui/dist/catalog/Icon/index.js.map +1 -1
- package/a2ui/dist/catalog/Image/catalog.json +1 -17
- package/a2ui/dist/catalog/Image/index.d.ts +1 -3
- package/a2ui/dist/catalog/Image/index.js +3 -11
- package/a2ui/dist/catalog/Image/index.js.map +1 -1
- package/a2ui/dist/catalog/LineChart/index.js +3 -3
- package/a2ui/dist/catalog/LineChart/index.js.map +1 -1
- package/a2ui/dist/catalog/Modal/index.js +1 -1
- package/a2ui/dist/catalog/Modal/index.js.map +1 -1
- package/a2ui/dist/catalog/index.d.ts +4 -0
- package/a2ui/dist/catalog/index.js +2046 -3
- package/a2ui/dist/catalog/index.js.map +1 -1
- package/a2ui/dist/index.d.ts +1 -1
- package/a2ui/dist/index.js +1 -1
- package/a2ui/dist/index.js.map +1 -1
- package/a2ui/dist/react/A2UIRenderer.d.ts +1 -0
- package/a2ui/dist/react/A2UIRenderer.js +8 -6
- package/a2ui/dist/react/A2UIRenderer.js.map +1 -1
- package/a2ui/dist/react/useAction.js +2 -1
- package/a2ui/dist/react/useAction.js.map +1 -1
- package/a2ui/dist/react/useChecks.js +7 -2
- package/a2ui/dist/react/useChecks.js.map +1 -1
- package/a2ui/dist/react/useDataBinding.d.ts +1 -1
- package/a2ui/dist/react/useDataBinding.js +24 -48
- package/a2ui/dist/react/useDataBinding.js.map +1 -1
- package/a2ui/dist/store/MessageProcessor.js +7 -19
- package/a2ui/dist/store/MessageProcessor.js.map +1 -1
- package/a2ui/dist/store/SignalStore.d.ts +2 -0
- package/a2ui/dist/store/SignalStore.js +5 -0
- package/a2ui/dist/store/SignalStore.js.map +1 -1
- package/a2ui/dist/store/index.d.ts +3 -1
- package/a2ui/dist/store/index.js +3 -1
- package/a2ui/dist/store/index.js.map +1 -1
- package/a2ui/dist/store/resolveDynamic.d.ts +9 -0
- package/a2ui/dist/store/resolveDynamic.js +88 -0
- package/a2ui/dist/store/resolveDynamic.js.map +1 -0
- package/a2ui/dist/store/resolveFunctionCall.d.ts +2 -4
- package/a2ui/dist/store/resolveFunctionCall.js +24 -82
- package/a2ui/dist/store/resolveFunctionCall.js.map +1 -1
- package/a2ui/dist/store/signalResolution.d.ts +4 -0
- package/a2ui/dist/store/signalResolution.js +25 -0
- package/a2ui/dist/store/signalResolution.js.map +1 -0
- package/a2ui/dist/store/utils.d.ts +7 -0
- package/a2ui/dist/store/utils.js +24 -0
- package/a2ui/dist/store/utils.js.map +1 -0
- package/a2ui/dist/tsconfig.build.tsbuildinfo +1 -1
- package/a2ui/styles/catalog/ChoicePicker.css +157 -0
- package/a2ui/styles/catalog/DateTimeInput.css +375 -0
- package/a2ui/styles/catalog/Icon.css +1 -1
- package/a2ui/styles/catalog/Text.css +11 -11
- package/a2ui/styles/theme.css +2 -1
- package/a2ui-catalog-extractor/README.md +23 -15
- package/a2ui-catalog-extractor/bin/a2ui-catalog-extractor.js +0 -1
- package/a2ui-catalog-extractor/dist/tsconfig.build.tsbuildinfo +1 -1
- package/a2ui-prompt/README.md +1 -2
- package/a2ui-prompt/dist/index.js +65 -31
- package/cli/bin/cli.js +5 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +8 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveDynamic.js","sourceRoot":"","sources":["../../src/store/resolveDynamic.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,12 @@ import type * as v0_9 from '@a2ui/web_core/v0_9';
|
|
|
2
2
|
import type { FunctionRegistry } from './FunctionRegistry.js';
|
|
3
3
|
import type { MessageProcessor } from './MessageProcessor.js';
|
|
4
4
|
import type { CatalogFunctionEntry } from '../catalog/defineCatalog.js';
|
|
5
|
-
export declare function isDataBinding(value: unknown): value is v0_9.DataBinding;
|
|
6
|
-
export declare function isFunctionCall(value: unknown): value is v0_9.FunctionCall;
|
|
7
|
-
export declare function resolveDynamicValue(processor: MessageProcessor, value: unknown, surfaceId: string, dataContextPath?: string, options?: ResolveFunctionOptions): unknown;
|
|
8
|
-
export declare function resolveFunctionArguments(processor: MessageProcessor, args: Record<string, unknown> | undefined, surfaceId: string, dataContextPath?: string, options?: ResolveFunctionOptions): Record<string, unknown>;
|
|
9
5
|
export interface ResolveFunctionOptions {
|
|
10
6
|
functions?: readonly CatalogFunctionEntry[] | undefined;
|
|
11
7
|
registry?: FunctionRegistry | undefined;
|
|
12
8
|
}
|
|
9
|
+
export declare function resolveFunctionArguments(processor: MessageProcessor, args: Record<string, unknown> | undefined, surfaceId: string, dataContextPath?: string, options?: ResolveFunctionOptions): Record<string, unknown>;
|
|
10
|
+
export type ExecuteFunctionCall = typeof executeFunctionCall;
|
|
13
11
|
/**
|
|
14
12
|
* Resolve arguments, look the function up in the registry, and invoke it.
|
|
15
13
|
* When no impl is registered, log once and return `undefined` so callers
|
|
@@ -1,79 +1,32 @@
|
|
|
1
|
-
import { computed, signal } from '@preact/signals';
|
|
2
1
|
import { functionRegistry } from './FunctionRegistry.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return
|
|
11
|
-
}
|
|
12
|
-
function resolveFromStore(processor, path, surfaceId, dataContextPath) {
|
|
13
|
-
const surface = processor.getOrCreateSurface(surfaceId);
|
|
14
|
-
const store = surface.store;
|
|
15
|
-
const resolvedPath = processor.resolvePath(path, dataContextPath);
|
|
16
|
-
const signal = store.getSignal(resolvedPath);
|
|
17
|
-
const raw = signal.value;
|
|
18
|
-
if (raw === undefined || raw === null)
|
|
19
|
-
return raw;
|
|
20
|
-
if (typeof raw !== 'string')
|
|
21
|
-
return raw;
|
|
22
|
-
try {
|
|
23
|
-
return JSON.parse(raw);
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return raw;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function setInStore(processor, path, value, surfaceId, dataContextPath) {
|
|
30
|
-
const surface = processor.getOrCreateSurface(surfaceId);
|
|
31
|
-
const resolvedPath = processor.resolvePath(path, dataContextPath);
|
|
32
|
-
surface.store.update(resolvedPath, value);
|
|
33
|
-
}
|
|
34
|
-
function signalFromStore(processor, path, surfaceId, dataContextPath) {
|
|
35
|
-
const surface = processor.getOrCreateSurface(surfaceId);
|
|
36
|
-
const resolvedPath = processor.resolvePath(path, dataContextPath);
|
|
37
|
-
return surface.store.getSignal(resolvedPath);
|
|
38
|
-
}
|
|
39
|
-
export function resolveDynamicValue(processor, value, surfaceId, dataContextPath, options = {}) {
|
|
40
|
-
if (typeof value === 'string' || typeof value === 'number'
|
|
41
|
-
|| typeof value === 'boolean') {
|
|
42
|
-
return value;
|
|
43
|
-
}
|
|
44
|
-
if (Array.isArray(value)) {
|
|
45
|
-
return value.map(item => resolveDynamicValue(processor, item, surfaceId, dataContextPath, options));
|
|
46
|
-
}
|
|
47
|
-
if (isDataBinding(value)) {
|
|
48
|
-
return resolveFromStore(processor, value.path, surfaceId, dataContextPath);
|
|
49
|
-
}
|
|
50
|
-
if (isFunctionCall(value)) {
|
|
51
|
-
return executeFunctionCall(processor, value, surfaceId, dataContextPath, options);
|
|
52
|
-
}
|
|
53
|
-
return value;
|
|
54
|
-
}
|
|
55
|
-
function resolveSignal(processor, value, surfaceId, dataContextPath, options) {
|
|
56
|
-
if (isDataBinding(value)) {
|
|
57
|
-
return signalFromStore(processor, value.path, surfaceId, dataContextPath);
|
|
58
|
-
}
|
|
59
|
-
if (isFunctionCall(value)) {
|
|
60
|
-
return computed(() => executeFunctionCall(processor, value, surfaceId, dataContextPath, options));
|
|
61
|
-
}
|
|
62
|
-
if (Array.isArray(value)) {
|
|
63
|
-
return computed(() => value.map(item => resolveDynamicValue(processor, item, surfaceId, dataContextPath, options)));
|
|
64
|
-
}
|
|
65
|
-
return signal(value);
|
|
2
|
+
import { resolveDynamicValue } from './resolveDynamic.js';
|
|
3
|
+
import { createResolvedSignal } from './signalResolution.js';
|
|
4
|
+
import { setInStore } from './SignalStore.js';
|
|
5
|
+
function resolveFunctionImpl(name, options) {
|
|
6
|
+
const scoped = options.functions?.find(entry => entry.name === name)?.impl;
|
|
7
|
+
if (scoped)
|
|
8
|
+
return scoped;
|
|
9
|
+
return (options.registry ?? functionRegistry).resolve(name);
|
|
66
10
|
}
|
|
11
|
+
const warnedUnknownFunctions = new Set();
|
|
67
12
|
function createFunctionContext(processor, surfaceId, dataContextPath, options) {
|
|
68
13
|
return {
|
|
69
14
|
processor,
|
|
70
15
|
surfaceId,
|
|
71
16
|
...(dataContextPath === undefined ? {} : { dataContextPath }),
|
|
72
17
|
resolveDynamicValue(value) {
|
|
73
|
-
return resolveDynamicValue(processor, value, surfaceId, dataContextPath,
|
|
18
|
+
return resolveDynamicValue(processor, value, surfaceId, dataContextPath, {
|
|
19
|
+
...options,
|
|
20
|
+
resolveFunctionCall: executeFunctionCall,
|
|
21
|
+
registry: options.registry ?? functionRegistry,
|
|
22
|
+
});
|
|
74
23
|
},
|
|
75
24
|
resolveSignal(value) {
|
|
76
|
-
return
|
|
25
|
+
return createResolvedSignal(processor, value, surfaceId, dataContextPath, {
|
|
26
|
+
...options,
|
|
27
|
+
resolveFunctionCall: executeFunctionCall,
|
|
28
|
+
registry: options.registry ?? functionRegistry,
|
|
29
|
+
});
|
|
77
30
|
},
|
|
78
31
|
set(path, value) {
|
|
79
32
|
setInStore(processor, path, value, surfaceId, dataContextPath);
|
|
@@ -85,25 +38,14 @@ export function resolveFunctionArguments(processor, args, surfaceId, dataContext
|
|
|
85
38
|
if (!args)
|
|
86
39
|
return resolved;
|
|
87
40
|
for (const [key, raw] of Object.entries(args)) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
resolved[key] = resolveDynamicValue(processor, raw, surfaceId, dataContextPath, options);
|
|
96
|
-
}
|
|
41
|
+
resolved[key] = resolveDynamicValue(processor, raw, surfaceId, dataContextPath, {
|
|
42
|
+
...options,
|
|
43
|
+
resolveFunctionCall: executeFunctionCall,
|
|
44
|
+
registry: options.registry ?? functionRegistry,
|
|
45
|
+
});
|
|
97
46
|
}
|
|
98
47
|
return resolved;
|
|
99
48
|
}
|
|
100
|
-
function resolveFunctionImpl(name, options) {
|
|
101
|
-
const scoped = options.functions?.find(entry => entry.name === name)?.impl;
|
|
102
|
-
if (scoped)
|
|
103
|
-
return scoped;
|
|
104
|
-
return (options.registry ?? functionRegistry).resolve(name);
|
|
105
|
-
}
|
|
106
|
-
const warnedUnknownFunctions = new Set();
|
|
107
49
|
/**
|
|
108
50
|
* Resolve arguments, look the function up in the registry, and invoke it.
|
|
109
51
|
* When no impl is registered, log once and return `undefined` so callers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveFunctionCall.js","sourceRoot":"","sources":["../../src/store/resolveFunctionCall.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolveFunctionCall.js","sourceRoot":"","sources":["../../src/store/resolveFunctionCall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Signal } from '@preact/signals';
|
|
2
|
+
import type { MessageProcessor } from './MessageProcessor.js';
|
|
3
|
+
import type { ResolveDynamicValueOptions } from './resolveDynamic.js';
|
|
4
|
+
export declare function createResolvedSignal(processor: MessageProcessor, value: unknown, surfaceId: string, dataContextPath: string | undefined, options: ResolveDynamicValueOptions): Signal<unknown>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Copyright 2026 The Lynx Authors. All rights reserved.
|
|
2
|
+
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
3
|
+
// LICENSE file in the root directory of this source tree.
|
|
4
|
+
import { computed, signal } from '@preact/signals';
|
|
5
|
+
import { createResolveFunctionCall, resolveDeepValue, resolveDynamicValue, } from './resolveDynamic.js';
|
|
6
|
+
import { isDataBinding, isFunctionCall } from './utils.js';
|
|
7
|
+
function signalFromStore(processor, path, surfaceId, dataContextPath) {
|
|
8
|
+
const surface = processor.getOrCreateSurface(surfaceId);
|
|
9
|
+
const resolvedPath = processor.resolvePath(path, dataContextPath);
|
|
10
|
+
return surface.store.getSignal(resolvedPath);
|
|
11
|
+
}
|
|
12
|
+
export function createResolvedSignal(processor, value, surfaceId, dataContextPath, options) {
|
|
13
|
+
const resolveFunctionCall = createResolveFunctionCall(options);
|
|
14
|
+
if (isDataBinding(value)) {
|
|
15
|
+
return signalFromStore(processor, value.path, surfaceId, dataContextPath);
|
|
16
|
+
}
|
|
17
|
+
if (isFunctionCall(value)) {
|
|
18
|
+
return computed(() => resolveFunctionCall?.(processor, value, surfaceId, dataContextPath));
|
|
19
|
+
}
|
|
20
|
+
if (Array.isArray(value)) {
|
|
21
|
+
return computed(() => resolveDeepValue(value, undefined, (leaf) => resolveDynamicValue(processor, leaf, surfaceId, dataContextPath, options)));
|
|
22
|
+
}
|
|
23
|
+
return signal(value);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=signalResolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signalResolution.js","sourceRoot":"","sources":["../../src/store/signalResolution.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAInD,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3D,SAAS,eAAe,CACtB,SAA2B,EAC3B,IAAY,EACZ,SAAiB,EACjB,eAAwB;IAExB,MAAM,OAAO,GAAG,SAAS,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,SAA2B,EAC3B,KAAc,EACd,SAAiB,EACjB,eAAmC,EACnC,OAAmC;IAEnC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAE/D,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC,GAAG,EAAE,CACnB,mBAAmB,EAAE,CACnB,SAAS,EACT,KAAK,EACL,SAAS,EACT,eAAe,CAChB,CACF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,GAAG,EAAE,CACnB,gBAAgB,CACd,KAAK,EACL,SAAS,EACT,CAAC,IAAI,EAAE,EAAE,CACP,mBAAmB,CACjB,SAAS,EACT,IAAI,EACJ,SAAS,EACT,eAAe,EACf,OAAO,CACR,CACJ,CACF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type * as v0_9 from '@a2ui/web_core/v0_9';
|
|
2
|
+
export declare function isObject(value: unknown): value is Record<string, unknown>;
|
|
3
|
+
export declare function isDataBinding(value: unknown): value is v0_9.DataBinding;
|
|
4
|
+
export declare function isFunctionCall(value: unknown): value is v0_9.FunctionCall;
|
|
5
|
+
export declare function isCallExpression(value: unknown): boolean;
|
|
6
|
+
export declare function isTemplateBinding(value: unknown): boolean;
|
|
7
|
+
export declare function isPlainDataBinding(value: unknown): boolean;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Copyright 2026 The Lynx Authors. All rights reserved.
|
|
2
|
+
// Licensed under the Apache License Version 2.0 that can be found in the
|
|
3
|
+
// LICENSE file in the root directory of this source tree.
|
|
4
|
+
export function isObject(value) {
|
|
5
|
+
return typeof value === 'object' && value !== null;
|
|
6
|
+
}
|
|
7
|
+
export function isDataBinding(value) {
|
|
8
|
+
return isObject(value) && 'path' in value;
|
|
9
|
+
}
|
|
10
|
+
export function isFunctionCall(value) {
|
|
11
|
+
return isObject(value) && 'call' in value;
|
|
12
|
+
}
|
|
13
|
+
export function isCallExpression(value) {
|
|
14
|
+
return isFunctionCall(value)
|
|
15
|
+
&& 'args' in value
|
|
16
|
+
&& 'returnType' in value;
|
|
17
|
+
}
|
|
18
|
+
export function isTemplateBinding(value) {
|
|
19
|
+
return isDataBinding(value) && 'componentId' in value;
|
|
20
|
+
}
|
|
21
|
+
export function isPlainDataBinding(value) {
|
|
22
|
+
return isDataBinding(value) && !('componentId' in value);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/store/utils.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,yEAAyE;AACzE,0DAA0D;AAI1D,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,IAAI,KAAK,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,IAAI,KAAK,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,cAAc,CAAC,KAAK,CAAC;WACvB,MAAM,IAAI,KAAK;WACf,YAAY,IAAI,KAAK,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,IAAI,KAAK,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC;AAC3D,CAAC"}
|