@copilotkit/a2ui-renderer 1.60.2 → 1.61.0
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/web-components/_virtual/_rolldown/runtime.cjs +19 -0
- package/dist/web-components/_virtual/_rolldown/runtime.mjs +18 -0
- package/dist/web-components/a2ui-types.d.cts +23 -0
- package/dist/web-components/a2ui-types.d.cts.map +1 -0
- package/dist/web-components/a2ui-types.d.mts +23 -0
- package/dist/web-components/a2ui-types.d.mts.map +1 -0
- package/dist/web-components/adapter.cjs +33 -0
- package/dist/web-components/adapter.cjs.map +1 -0
- package/dist/web-components/adapter.d.cts +12 -0
- package/dist/web-components/adapter.d.cts.map +1 -0
- package/dist/web-components/adapter.d.mts +12 -0
- package/dist/web-components/adapter.d.mts.map +1 -0
- package/dist/web-components/adapter.mjs +32 -0
- package/dist/web-components/adapter.mjs.map +1 -0
- package/dist/web-components/bound-component.cjs +71 -0
- package/dist/web-components/bound-component.cjs.map +1 -0
- package/dist/web-components/bound-component.d.cts +44 -0
- package/dist/web-components/bound-component.d.cts.map +1 -0
- package/dist/web-components/bound-component.d.mts +44 -0
- package/dist/web-components/bound-component.d.mts.map +1 -0
- package/dist/web-components/bound-component.mjs +71 -0
- package/dist/web-components/bound-component.mjs.map +1 -0
- package/dist/web-components/catalog/basic/audio-player.cjs +32 -0
- package/dist/web-components/catalog/basic/audio-player.cjs.map +1 -0
- package/dist/web-components/catalog/basic/audio-player.d.cts +8 -0
- package/dist/web-components/catalog/basic/audio-player.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/audio-player.d.mts +8 -0
- package/dist/web-components/catalog/basic/audio-player.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/audio-player.mjs +32 -0
- package/dist/web-components/catalog/basic/audio-player.mjs.map +1 -0
- package/dist/web-components/catalog/basic/button.cjs +33 -0
- package/dist/web-components/catalog/basic/button.cjs.map +1 -0
- package/dist/web-components/catalog/basic/button.d.cts +8 -0
- package/dist/web-components/catalog/basic/button.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/button.d.mts +8 -0
- package/dist/web-components/catalog/basic/button.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/button.mjs +33 -0
- package/dist/web-components/catalog/basic/button.mjs.map +1 -0
- package/dist/web-components/catalog/basic/card.cjs +23 -0
- package/dist/web-components/catalog/basic/card.cjs.map +1 -0
- package/dist/web-components/catalog/basic/card.d.cts +8 -0
- package/dist/web-components/catalog/basic/card.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/card.d.mts +8 -0
- package/dist/web-components/catalog/basic/card.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/card.mjs +23 -0
- package/dist/web-components/catalog/basic/card.mjs.map +1 -0
- package/dist/web-components/catalog/basic/check-box.cjs +50 -0
- package/dist/web-components/catalog/basic/check-box.cjs.map +1 -0
- package/dist/web-components/catalog/basic/check-box.d.cts +8 -0
- package/dist/web-components/catalog/basic/check-box.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/check-box.d.mts +8 -0
- package/dist/web-components/catalog/basic/check-box.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/check-box.mjs +50 -0
- package/dist/web-components/catalog/basic/check-box.mjs.map +1 -0
- package/dist/web-components/catalog/basic/choice-picker.cjs +90 -0
- package/dist/web-components/catalog/basic/choice-picker.cjs.map +1 -0
- package/dist/web-components/catalog/basic/choice-picker.d.cts +8 -0
- package/dist/web-components/catalog/basic/choice-picker.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/choice-picker.d.mts +8 -0
- package/dist/web-components/catalog/basic/choice-picker.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/choice-picker.mjs +90 -0
- package/dist/web-components/catalog/basic/choice-picker.mjs.map +1 -0
- package/dist/web-components/catalog/basic/column.cjs +27 -0
- package/dist/web-components/catalog/basic/column.cjs.map +1 -0
- package/dist/web-components/catalog/basic/column.d.cts +8 -0
- package/dist/web-components/catalog/basic/column.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/column.d.mts +8 -0
- package/dist/web-components/catalog/basic/column.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/column.mjs +27 -0
- package/dist/web-components/catalog/basic/column.mjs.map +1 -0
- package/dist/web-components/catalog/basic/components.cjs +44 -0
- package/dist/web-components/catalog/basic/components.cjs.map +1 -0
- package/dist/web-components/catalog/basic/components.d.cts +19 -0
- package/dist/web-components/catalog/basic/components.d.mts +19 -0
- package/dist/web-components/catalog/basic/components.mjs +44 -0
- package/dist/web-components/catalog/basic/components.mjs.map +1 -0
- package/dist/web-components/catalog/basic/date-time-input.cjs +50 -0
- package/dist/web-components/catalog/basic/date-time-input.cjs.map +1 -0
- package/dist/web-components/catalog/basic/date-time-input.d.cts +8 -0
- package/dist/web-components/catalog/basic/date-time-input.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/date-time-input.d.mts +8 -0
- package/dist/web-components/catalog/basic/date-time-input.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/date-time-input.mjs +50 -0
- package/dist/web-components/catalog/basic/date-time-input.mjs.map +1 -0
- package/dist/web-components/catalog/basic/divider.cjs +21 -0
- package/dist/web-components/catalog/basic/divider.cjs.map +1 -0
- package/dist/web-components/catalog/basic/divider.d.cts +8 -0
- package/dist/web-components/catalog/basic/divider.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/divider.d.mts +8 -0
- package/dist/web-components/catalog/basic/divider.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/divider.mjs +21 -0
- package/dist/web-components/catalog/basic/divider.mjs.map +1 -0
- package/dist/web-components/catalog/basic/icon.cjs +29 -0
- package/dist/web-components/catalog/basic/icon.cjs.map +1 -0
- package/dist/web-components/catalog/basic/icon.d.cts +8 -0
- package/dist/web-components/catalog/basic/icon.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/icon.d.mts +8 -0
- package/dist/web-components/catalog/basic/icon.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/icon.mjs +29 -0
- package/dist/web-components/catalog/basic/icon.mjs.map +1 -0
- package/dist/web-components/catalog/basic/ids.cjs +11 -0
- package/dist/web-components/catalog/basic/ids.cjs.map +1 -0
- package/dist/web-components/catalog/basic/ids.mjs +10 -0
- package/dist/web-components/catalog/basic/ids.mjs.map +1 -0
- package/dist/web-components/catalog/basic/image.cjs +42 -0
- package/dist/web-components/catalog/basic/image.cjs.map +1 -0
- package/dist/web-components/catalog/basic/image.d.cts +8 -0
- package/dist/web-components/catalog/basic/image.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/image.d.mts +8 -0
- package/dist/web-components/catalog/basic/image.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/image.mjs +42 -0
- package/dist/web-components/catalog/basic/image.mjs.map +1 -0
- package/dist/web-components/catalog/basic/index.cjs +31 -0
- package/dist/web-components/catalog/basic/index.cjs.map +1 -0
- package/dist/web-components/catalog/basic/index.d.cts +29 -0
- package/dist/web-components/catalog/basic/index.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/index.d.mts +29 -0
- package/dist/web-components/catalog/basic/index.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/index.mjs +30 -0
- package/dist/web-components/catalog/basic/index.mjs.map +1 -0
- package/dist/web-components/catalog/basic/list.cjs +31 -0
- package/dist/web-components/catalog/basic/list.cjs.map +1 -0
- package/dist/web-components/catalog/basic/list.d.cts +8 -0
- package/dist/web-components/catalog/basic/list.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/list.d.mts +8 -0
- package/dist/web-components/catalog/basic/list.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/list.mjs +31 -0
- package/dist/web-components/catalog/basic/list.mjs.map +1 -0
- package/dist/web-components/catalog/basic/modal.cjs +80 -0
- package/dist/web-components/catalog/basic/modal.cjs.map +1 -0
- package/dist/web-components/catalog/basic/modal.d.cts +8 -0
- package/dist/web-components/catalog/basic/modal.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/modal.d.mts +8 -0
- package/dist/web-components/catalog/basic/modal.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/modal.mjs +80 -0
- package/dist/web-components/catalog/basic/modal.mjs.map +1 -0
- package/dist/web-components/catalog/basic/row.cjs +27 -0
- package/dist/web-components/catalog/basic/row.cjs.map +1 -0
- package/dist/web-components/catalog/basic/row.d.cts +8 -0
- package/dist/web-components/catalog/basic/row.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/row.d.mts +8 -0
- package/dist/web-components/catalog/basic/row.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/row.mjs +27 -0
- package/dist/web-components/catalog/basic/row.mjs.map +1 -0
- package/dist/web-components/catalog/basic/slider.cjs +44 -0
- package/dist/web-components/catalog/basic/slider.cjs.map +1 -0
- package/dist/web-components/catalog/basic/slider.d.cts +8 -0
- package/dist/web-components/catalog/basic/slider.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/slider.d.mts +8 -0
- package/dist/web-components/catalog/basic/slider.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/slider.mjs +44 -0
- package/dist/web-components/catalog/basic/slider.mjs.map +1 -0
- package/dist/web-components/catalog/basic/tabs.cjs +58 -0
- package/dist/web-components/catalog/basic/tabs.cjs.map +1 -0
- package/dist/web-components/catalog/basic/tabs.d.cts +8 -0
- package/dist/web-components/catalog/basic/tabs.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/tabs.d.mts +8 -0
- package/dist/web-components/catalog/basic/tabs.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/tabs.mjs +58 -0
- package/dist/web-components/catalog/basic/tabs.mjs.map +1 -0
- package/dist/web-components/catalog/basic/text-field.cjs +60 -0
- package/dist/web-components/catalog/basic/text-field.cjs.map +1 -0
- package/dist/web-components/catalog/basic/text-field.d.cts +8 -0
- package/dist/web-components/catalog/basic/text-field.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/text-field.d.mts +8 -0
- package/dist/web-components/catalog/basic/text-field.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/text-field.mjs +60 -0
- package/dist/web-components/catalog/basic/text-field.mjs.map +1 -0
- package/dist/web-components/catalog/basic/text.cjs +36 -0
- package/dist/web-components/catalog/basic/text.cjs.map +1 -0
- package/dist/web-components/catalog/basic/text.d.cts +8 -0
- package/dist/web-components/catalog/basic/text.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/text.d.mts +8 -0
- package/dist/web-components/catalog/basic/text.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/text.mjs +36 -0
- package/dist/web-components/catalog/basic/text.mjs.map +1 -0
- package/dist/web-components/catalog/basic/utils.cjs +48 -0
- package/dist/web-components/catalog/basic/utils.cjs.map +1 -0
- package/dist/web-components/catalog/basic/utils.d.cts +1 -0
- package/dist/web-components/catalog/basic/utils.d.mts +1 -0
- package/dist/web-components/catalog/basic/utils.mjs +41 -0
- package/dist/web-components/catalog/basic/utils.mjs.map +1 -0
- package/dist/web-components/catalog/basic/video.cjs +22 -0
- package/dist/web-components/catalog/basic/video.cjs.map +1 -0
- package/dist/web-components/catalog/basic/video.d.cts +8 -0
- package/dist/web-components/catalog/basic/video.d.cts.map +1 -0
- package/dist/web-components/catalog/basic/video.d.mts +8 -0
- package/dist/web-components/catalog/basic/video.d.mts.map +1 -0
- package/dist/web-components/catalog/basic/video.mjs +22 -0
- package/dist/web-components/catalog/basic/video.mjs.map +1 -0
- package/dist/web-components/catalog/children.cjs +17 -0
- package/dist/web-components/catalog/children.cjs.map +1 -0
- package/dist/web-components/catalog/children.mjs +16 -0
- package/dist/web-components/catalog/children.mjs.map +1 -0
- package/dist/web-components/catalog/minimal/button.cjs +38 -0
- package/dist/web-components/catalog/minimal/button.cjs.map +1 -0
- package/dist/web-components/catalog/minimal/button.d.cts +284 -0
- package/dist/web-components/catalog/minimal/button.d.cts.map +1 -0
- package/dist/web-components/catalog/minimal/button.d.mts +284 -0
- package/dist/web-components/catalog/minimal/button.d.mts.map +1 -0
- package/dist/web-components/catalog/minimal/button.mjs +36 -0
- package/dist/web-components/catalog/minimal/button.mjs.map +1 -0
- package/dist/web-components/catalog/minimal/column.cjs +50 -0
- package/dist/web-components/catalog/minimal/column.cjs.map +1 -0
- package/dist/web-components/catalog/minimal/column.d.cts +68 -0
- package/dist/web-components/catalog/minimal/column.d.cts.map +1 -0
- package/dist/web-components/catalog/minimal/column.d.mts +68 -0
- package/dist/web-components/catalog/minimal/column.d.mts.map +1 -0
- package/dist/web-components/catalog/minimal/column.mjs +48 -0
- package/dist/web-components/catalog/minimal/column.mjs.map +1 -0
- package/dist/web-components/catalog/minimal/components.cjs +18 -0
- package/dist/web-components/catalog/minimal/components.cjs.map +1 -0
- package/dist/web-components/catalog/minimal/components.d.cts +12 -0
- package/dist/web-components/catalog/minimal/components.d.cts.map +1 -0
- package/dist/web-components/catalog/minimal/components.d.mts +12 -0
- package/dist/web-components/catalog/minimal/components.d.mts.map +1 -0
- package/dist/web-components/catalog/minimal/components.mjs +18 -0
- package/dist/web-components/catalog/minimal/components.mjs.map +1 -0
- package/dist/web-components/catalog/minimal/index.cjs +49 -0
- package/dist/web-components/catalog/minimal/index.cjs.map +1 -0
- package/dist/web-components/catalog/minimal/index.d.cts +17 -0
- package/dist/web-components/catalog/minimal/index.d.cts.map +1 -0
- package/dist/web-components/catalog/minimal/index.d.mts +17 -0
- package/dist/web-components/catalog/minimal/index.d.mts.map +1 -0
- package/dist/web-components/catalog/minimal/index.mjs +43 -0
- package/dist/web-components/catalog/minimal/index.mjs.map +1 -0
- package/dist/web-components/catalog/minimal/row.cjs +49 -0
- package/dist/web-components/catalog/minimal/row.cjs.map +1 -0
- package/dist/web-components/catalog/minimal/row.d.cts +68 -0
- package/dist/web-components/catalog/minimal/row.d.cts.map +1 -0
- package/dist/web-components/catalog/minimal/row.d.mts +68 -0
- package/dist/web-components/catalog/minimal/row.d.mts.map +1 -0
- package/dist/web-components/catalog/minimal/row.mjs +47 -0
- package/dist/web-components/catalog/minimal/row.mjs.map +1 -0
- package/dist/web-components/catalog/minimal/text-field.cjs +74 -0
- package/dist/web-components/catalog/minimal/text-field.cjs.map +1 -0
- package/dist/web-components/catalog/minimal/text-field.d.cts +164 -0
- package/dist/web-components/catalog/minimal/text-field.d.cts.map +1 -0
- package/dist/web-components/catalog/minimal/text-field.d.mts +164 -0
- package/dist/web-components/catalog/minimal/text-field.d.mts.map +1 -0
- package/dist/web-components/catalog/minimal/text-field.mjs +72 -0
- package/dist/web-components/catalog/minimal/text-field.mjs.map +1 -0
- package/dist/web-components/catalog/minimal/text.cjs +40 -0
- package/dist/web-components/catalog/minimal/text.cjs.map +1 -0
- package/dist/web-components/catalog/minimal/text.d.cts +92 -0
- package/dist/web-components/catalog/minimal/text.d.cts.map +1 -0
- package/dist/web-components/catalog/minimal/text.d.mts +92 -0
- package/dist/web-components/catalog/minimal/text.d.mts.map +1 -0
- package/dist/web-components/catalog/minimal/text.mjs +38 -0
- package/dist/web-components/catalog/minimal/text.mjs.map +1 -0
- package/dist/web-components/catalog/minimal/utils.cjs +26 -0
- package/dist/web-components/catalog/minimal/utils.cjs.map +1 -0
- package/dist/web-components/catalog/minimal/utils.mjs +24 -0
- package/dist/web-components/catalog/minimal/utils.mjs.map +1 -0
- package/dist/web-components/create-catalog.cjs +143 -0
- package/dist/web-components/create-catalog.cjs.map +1 -0
- package/dist/web-components/create-catalog.d.cts +44 -0
- package/dist/web-components/create-catalog.d.cts.map +1 -0
- package/dist/web-components/create-catalog.d.mts +44 -0
- package/dist/web-components/create-catalog.d.mts.map +1 -0
- package/dist/web-components/create-catalog.mjs +137 -0
- package/dist/web-components/create-catalog.mjs.map +1 -0
- package/dist/web-components/define.cjs +24 -0
- package/dist/web-components/define.cjs.map +1 -0
- package/dist/web-components/define.d.cts +19 -0
- package/dist/web-components/define.d.cts.map +1 -0
- package/dist/web-components/define.d.mts +19 -0
- package/dist/web-components/define.d.mts.map +1 -0
- package/dist/web-components/define.mjs +17 -0
- package/dist/web-components/define.mjs.map +1 -0
- package/dist/web-components/index.cjs +78 -0
- package/dist/web-components/index.d.cts +30 -0
- package/dist/web-components/index.d.mts +30 -0
- package/dist/web-components/index.mjs +29 -0
- package/dist/web-components/node.cjs +94 -0
- package/dist/web-components/node.cjs.map +1 -0
- package/dist/web-components/node.d.cts +33 -0
- package/dist/web-components/node.d.cts.map +1 -0
- package/dist/web-components/node.d.mts +33 -0
- package/dist/web-components/node.d.mts.map +1 -0
- package/dist/web-components/node.mjs +94 -0
- package/dist/web-components/node.mjs.map +1 -0
- package/dist/web-components/surface.cjs +314 -0
- package/dist/web-components/surface.cjs.map +1 -0
- package/dist/web-components/surface.d.cts +43 -0
- package/dist/web-components/surface.d.cts.map +1 -0
- package/dist/web-components/surface.d.mts +43 -0
- package/dist/web-components/surface.d.mts.map +1 -0
- package/dist/web-components/surface.mjs +314 -0
- package/dist/web-components/surface.mjs.map +1 -0
- package/dist/web-components/types.d.cts +45 -0
- package/dist/web-components/types.d.cts.map +1 -0
- package/dist/web-components/types.d.mts +45 -0
- package/dist/web-components/types.d.mts.map +1 -0
- package/package.json +38 -3
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
const require_index = require('./catalog/basic/index.cjs');
|
|
2
|
+
let lit = require("lit");
|
|
3
|
+
let _a2ui_web_core_v0_9 = require("@a2ui/web_core/v0_9");
|
|
4
|
+
|
|
5
|
+
//#region src/web-components/surface.ts
|
|
6
|
+
const DEFAULT_SURFACE_ID = "default";
|
|
7
|
+
const BASIC_CATALOG_ID = "https://a2ui.org/specification/v0_9/basic_catalog.json";
|
|
8
|
+
function isRecord(value) {
|
|
9
|
+
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
10
|
+
}
|
|
11
|
+
function getRecordProperty(record, key) {
|
|
12
|
+
const value = record[key];
|
|
13
|
+
return isRecord(value) ? value : void 0;
|
|
14
|
+
}
|
|
15
|
+
function getStringProperty(record, key) {
|
|
16
|
+
const value = record[key];
|
|
17
|
+
return typeof value === "string" && value.length > 0 ? value : void 0;
|
|
18
|
+
}
|
|
19
|
+
function getBooleanProperty(record, key) {
|
|
20
|
+
const value = record[key];
|
|
21
|
+
return typeof value === "boolean" ? value : void 0;
|
|
22
|
+
}
|
|
23
|
+
function getSurfaceId(payload) {
|
|
24
|
+
return payload ? getStringProperty(payload, "surfaceId") ?? DEFAULT_SURFACE_ID : DEFAULT_SURFACE_ID;
|
|
25
|
+
}
|
|
26
|
+
function getOperationSurfaceId(operation) {
|
|
27
|
+
if ("createSurface" in operation) return operation.createSurface.surfaceId;
|
|
28
|
+
if ("updateComponents" in operation) return operation.updateComponents.surfaceId;
|
|
29
|
+
if ("updateDataModel" in operation) return operation.updateDataModel.surfaceId;
|
|
30
|
+
if ("deleteSurface" in operation) return operation.deleteSurface.surfaceId;
|
|
31
|
+
return DEFAULT_SURFACE_ID;
|
|
32
|
+
}
|
|
33
|
+
function normalizeOperations(operations, catalogId) {
|
|
34
|
+
return operations.flatMap((operation) => {
|
|
35
|
+
if (!isRecord(operation)) return [];
|
|
36
|
+
const createSurface = getRecordProperty(operation, "createSurface");
|
|
37
|
+
if (createSurface) return [{
|
|
38
|
+
version: "v0.9",
|
|
39
|
+
createSurface: {
|
|
40
|
+
surfaceId: getSurfaceId(createSurface),
|
|
41
|
+
catalogId: getStringProperty(createSurface, "catalogId") ?? catalogId,
|
|
42
|
+
theme: createSurface.theme ?? {},
|
|
43
|
+
sendDataModel: getBooleanProperty(createSurface, "sendDataModel")
|
|
44
|
+
}
|
|
45
|
+
}];
|
|
46
|
+
const updateComponents = getRecordProperty(operation, "updateComponents");
|
|
47
|
+
if (updateComponents) {
|
|
48
|
+
const components = updateComponents.components;
|
|
49
|
+
return [{
|
|
50
|
+
version: "v0.9",
|
|
51
|
+
updateComponents: {
|
|
52
|
+
surfaceId: getSurfaceId(updateComponents),
|
|
53
|
+
components: Array.isArray(components) ? components.map(normalizeComponent) : []
|
|
54
|
+
}
|
|
55
|
+
}];
|
|
56
|
+
}
|
|
57
|
+
const updateDataModel = getRecordProperty(operation, "updateDataModel");
|
|
58
|
+
if (updateDataModel) return [{
|
|
59
|
+
version: "v0.9",
|
|
60
|
+
updateDataModel: {
|
|
61
|
+
surfaceId: getSurfaceId(updateDataModel),
|
|
62
|
+
path: getStringProperty(updateDataModel, "path") ?? "/",
|
|
63
|
+
value: updateDataModel.value
|
|
64
|
+
}
|
|
65
|
+
}];
|
|
66
|
+
const deleteSurface = getRecordProperty(operation, "deleteSurface");
|
|
67
|
+
if (deleteSurface) return [{
|
|
68
|
+
version: "v0.9",
|
|
69
|
+
deleteSurface: { surfaceId: getSurfaceId(deleteSurface) }
|
|
70
|
+
}];
|
|
71
|
+
const beginRendering = getRecordProperty(operation, "beginRendering");
|
|
72
|
+
if (beginRendering) return [{
|
|
73
|
+
version: "v0.9",
|
|
74
|
+
createSurface: {
|
|
75
|
+
surfaceId: getSurfaceId(beginRendering),
|
|
76
|
+
catalogId,
|
|
77
|
+
theme: beginRendering.styles ?? {},
|
|
78
|
+
sendDataModel: getBooleanProperty(beginRendering, "sendDataModel")
|
|
79
|
+
}
|
|
80
|
+
}];
|
|
81
|
+
const surfaceUpdate = getRecordProperty(operation, "surfaceUpdate");
|
|
82
|
+
if (surfaceUpdate) {
|
|
83
|
+
const components = surfaceUpdate.components;
|
|
84
|
+
return [{
|
|
85
|
+
version: "v0.9",
|
|
86
|
+
updateComponents: {
|
|
87
|
+
surfaceId: getSurfaceId(surfaceUpdate),
|
|
88
|
+
components: Array.isArray(components) ? components.map(normalizeComponent) : []
|
|
89
|
+
}
|
|
90
|
+
}];
|
|
91
|
+
}
|
|
92
|
+
const dataModelUpdate = getRecordProperty(operation, "dataModelUpdate");
|
|
93
|
+
if (dataModelUpdate) return [{
|
|
94
|
+
version: "v0.9",
|
|
95
|
+
updateDataModel: {
|
|
96
|
+
surfaceId: getSurfaceId(dataModelUpdate),
|
|
97
|
+
path: getStringProperty(dataModelUpdate, "path") ?? "/",
|
|
98
|
+
value: dataModelUpdate.value ?? dataModelUpdate.contents
|
|
99
|
+
}
|
|
100
|
+
}];
|
|
101
|
+
return [];
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function normalizeComponent(component) {
|
|
105
|
+
if (!component || typeof component !== "object") return component;
|
|
106
|
+
const record = component;
|
|
107
|
+
if (!record.component || typeof record.component === "string") return record;
|
|
108
|
+
const entries = Object.entries(record.component);
|
|
109
|
+
if (entries.length !== 1) return record;
|
|
110
|
+
const [componentName, props] = entries[0];
|
|
111
|
+
return {
|
|
112
|
+
id: record.id,
|
|
113
|
+
component: componentName,
|
|
114
|
+
...props && typeof props === "object" ? props : {}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function toClientEventMessage(action) {
|
|
118
|
+
const record = isRecord(action) ? action : {};
|
|
119
|
+
return { userAction: {
|
|
120
|
+
name: getStringProperty(record, "name") ?? "unknown",
|
|
121
|
+
surfaceId: getStringProperty(record, "surfaceId") ?? DEFAULT_SURFACE_ID,
|
|
122
|
+
sourceComponentId: getStringProperty(record, "sourceComponentId"),
|
|
123
|
+
context: isRecord(record.context) ? record.context : {},
|
|
124
|
+
timestamp: getStringProperty(record, "timestamp") ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
125
|
+
dataContextPath: getStringProperty(record, "dataContextPath")
|
|
126
|
+
} };
|
|
127
|
+
}
|
|
128
|
+
function defaultLoading() {
|
|
129
|
+
return lit.html`
|
|
130
|
+
<div
|
|
131
|
+
class="cpk:flex cpk:flex-col cpk:gap-3 cpk:rounded-xl cpk:border cpk:border-gray-100 cpk:bg-gray-50/50 cpk:p-5"
|
|
132
|
+
style="min-height: 120px;"
|
|
133
|
+
data-testid="a2ui-loading"
|
|
134
|
+
>
|
|
135
|
+
<div class="cpk:flex cpk:items-center cpk:gap-2">
|
|
136
|
+
<div
|
|
137
|
+
class="cpk:h-3 cpk:w-3 cpk:rounded-full cpk:bg-gray-200"
|
|
138
|
+
style="animation: cpk-a2ui-pulse 1.5s ease-in-out infinite;"
|
|
139
|
+
data-testid="a2ui-loading-dot"
|
|
140
|
+
></div>
|
|
141
|
+
<span class="cpk:text-xs cpk:font-medium cpk:text-gray-400">
|
|
142
|
+
Generating UI...
|
|
143
|
+
</span>
|
|
144
|
+
</div>
|
|
145
|
+
<div class="cpk:flex cpk:flex-col cpk:gap-2">
|
|
146
|
+
${[
|
|
147
|
+
.8,
|
|
148
|
+
.6,
|
|
149
|
+
.4
|
|
150
|
+
].map((width, i) => lit.html`
|
|
151
|
+
<div
|
|
152
|
+
class="cpk:h-3 cpk:rounded cpk:bg-gray-200/70"
|
|
153
|
+
style=${`width: ${width * 100}%; animation: cpk-a2ui-pulse 1.5s ease-in-out ${i * .15}s infinite;`}
|
|
154
|
+
data-testid="a2ui-loading-bar"
|
|
155
|
+
></div>
|
|
156
|
+
`)}
|
|
157
|
+
</div>
|
|
158
|
+
<style>
|
|
159
|
+
@keyframes cpk-a2ui-pulse {
|
|
160
|
+
0%,
|
|
161
|
+
100% {
|
|
162
|
+
opacity: 0.4;
|
|
163
|
+
}
|
|
164
|
+
50% {
|
|
165
|
+
opacity: 1;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
</style>
|
|
169
|
+
</div>
|
|
170
|
+
`;
|
|
171
|
+
}
|
|
172
|
+
var CpkA2uiSurface = class extends lit.LitElement {
|
|
173
|
+
constructor(..._args) {
|
|
174
|
+
super(..._args);
|
|
175
|
+
this.operations = [];
|
|
176
|
+
this.processor = null;
|
|
177
|
+
this.lastOpsHash = "";
|
|
178
|
+
this.renderedSurfaceIds = [];
|
|
179
|
+
this.error = null;
|
|
180
|
+
}
|
|
181
|
+
static {
|
|
182
|
+
this.properties = {
|
|
183
|
+
operations: { attribute: false },
|
|
184
|
+
catalog: { attribute: false },
|
|
185
|
+
theme: { attribute: false },
|
|
186
|
+
surfaceId: { attribute: false },
|
|
187
|
+
loadingComponent: { attribute: false }
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
createRenderRoot() {
|
|
191
|
+
return this;
|
|
192
|
+
}
|
|
193
|
+
willUpdate(changed) {
|
|
194
|
+
if (changed.has("catalog")) {
|
|
195
|
+
this.processor = null;
|
|
196
|
+
this.processorCatalog = void 0;
|
|
197
|
+
this.lastOpsHash = "";
|
|
198
|
+
this.renderedSurfaceIds = [];
|
|
199
|
+
}
|
|
200
|
+
if (changed.has("operations") || changed.has("catalog") || changed.has("theme") || changed.has("surfaceId")) this.processOperations();
|
|
201
|
+
}
|
|
202
|
+
getCatalog() {
|
|
203
|
+
return this.catalog ?? require_index.basicCatalog;
|
|
204
|
+
}
|
|
205
|
+
getProcessor() {
|
|
206
|
+
const catalog = this.getCatalog();
|
|
207
|
+
if (!this.processor || this.processorCatalog !== catalog) {
|
|
208
|
+
this.processorCatalog = catalog;
|
|
209
|
+
this.processor = new _a2ui_web_core_v0_9.MessageProcessor([catalog], (action) => {
|
|
210
|
+
const message = toClientEventMessage(action);
|
|
211
|
+
this.dispatchEvent(new CustomEvent("a2ui-action", {
|
|
212
|
+
detail: message,
|
|
213
|
+
bubbles: true,
|
|
214
|
+
composed: true
|
|
215
|
+
}));
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
return this.processor;
|
|
219
|
+
}
|
|
220
|
+
processOperations() {
|
|
221
|
+
if (!Array.isArray(this.operations) || this.operations.length === 0) {
|
|
222
|
+
this.renderedSurfaceIds = [];
|
|
223
|
+
this.error = null;
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const catalogId = this.getCatalog().id || BASIC_CATALOG_ID;
|
|
227
|
+
const normalized = normalizeOperations(this.operations, catalogId);
|
|
228
|
+
const hash = JSON.stringify({
|
|
229
|
+
operations: normalized,
|
|
230
|
+
surfaceId: this.surfaceId,
|
|
231
|
+
theme: this.theme
|
|
232
|
+
});
|
|
233
|
+
if (hash === this.lastOpsHash) return;
|
|
234
|
+
this.lastOpsHash = hash;
|
|
235
|
+
const grouped = /* @__PURE__ */ new Map();
|
|
236
|
+
for (const operation of normalized) {
|
|
237
|
+
const surfaceId = this.surfaceId ?? getOperationSurfaceId(operation);
|
|
238
|
+
if (!grouped.has(surfaceId)) grouped.set(surfaceId, []);
|
|
239
|
+
grouped.get(surfaceId).push(operation);
|
|
240
|
+
}
|
|
241
|
+
const processor = this.getProcessor();
|
|
242
|
+
try {
|
|
243
|
+
for (const [surfaceId, ops] of grouped) {
|
|
244
|
+
const existing = processor.model.getSurface(surfaceId);
|
|
245
|
+
let filtered = existing ? ops.filter((op) => !("createSurface" in op)) : ops;
|
|
246
|
+
if (!existing && !filtered.some((op) => "createSurface" in op)) filtered = [{
|
|
247
|
+
version: "v0.9",
|
|
248
|
+
createSurface: {
|
|
249
|
+
surfaceId,
|
|
250
|
+
catalogId,
|
|
251
|
+
theme: this.theme ?? {}
|
|
252
|
+
}
|
|
253
|
+
}, ...filtered];
|
|
254
|
+
processor.processMessages(filtered);
|
|
255
|
+
}
|
|
256
|
+
this.renderedSurfaceIds = [...grouped.keys()];
|
|
257
|
+
this.error = null;
|
|
258
|
+
} catch (err) {
|
|
259
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
260
|
+
this.error = message;
|
|
261
|
+
this.dispatchEvent(new CustomEvent("a2ui-error", {
|
|
262
|
+
detail: {
|
|
263
|
+
error: err,
|
|
264
|
+
message
|
|
265
|
+
},
|
|
266
|
+
bubbles: true,
|
|
267
|
+
composed: true
|
|
268
|
+
}));
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
render() {
|
|
272
|
+
if (this.error) return lit.html`
|
|
273
|
+
<div
|
|
274
|
+
class="cpk:rounded-lg cpk:border cpk:border-red-200 cpk:bg-red-50 cpk:p-3 cpk:text-sm cpk:text-red-700"
|
|
275
|
+
>
|
|
276
|
+
A2UI render error: ${this.error}
|
|
277
|
+
</div>
|
|
278
|
+
`;
|
|
279
|
+
if (!this.renderedSurfaceIds.length) return this.loadingComponent ? this.loadingComponent() : defaultLoading();
|
|
280
|
+
const processor = this.getProcessor();
|
|
281
|
+
return lit.html`
|
|
282
|
+
<div
|
|
283
|
+
class="cpk:flex cpk:min-h-0 cpk:flex-1 cpk:flex-col cpk:gap-6 cpk:overflow-auto cpk:py-6"
|
|
284
|
+
data-testid="a2ui-activity-renderer"
|
|
285
|
+
>
|
|
286
|
+
${this.renderedSurfaceIds.map((surfaceId) => {
|
|
287
|
+
const surface = processor.model.getSurface(surfaceId);
|
|
288
|
+
if (!surface) return lit.nothing;
|
|
289
|
+
return lit.html`
|
|
290
|
+
<div
|
|
291
|
+
class="cpk:flex cpk:w-full cpk:flex-none cpk:flex-col cpk:gap-4"
|
|
292
|
+
data-surface-id=${surfaceId}
|
|
293
|
+
>
|
|
294
|
+
<div
|
|
295
|
+
class="a2ui-surface cpk:flex cpk:flex-1"
|
|
296
|
+
data-surface-id=${surfaceId}
|
|
297
|
+
>
|
|
298
|
+
<cpk-a2ui-node
|
|
299
|
+
.surface=${surface}
|
|
300
|
+
.componentId=${"root"}
|
|
301
|
+
.basePath=${"/"}
|
|
302
|
+
></cpk-a2ui-node>
|
|
303
|
+
</div>
|
|
304
|
+
</div>
|
|
305
|
+
`;
|
|
306
|
+
})}
|
|
307
|
+
</div>
|
|
308
|
+
`;
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
//#endregion
|
|
313
|
+
exports.CpkA2uiSurface = CpkA2uiSurface;
|
|
314
|
+
//# sourceMappingURL=surface.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface.cjs","names":["LitElement","basicCatalog","MessageProcessor","nothing"],"sources":["../../src/web-components/surface.ts"],"sourcesContent":["import { html, LitElement, nothing } from \"lit\";\nimport { MessageProcessor } from \"@a2ui/web_core/v0_9\";\nimport type { A2uiMessage, Catalog } from \"@a2ui/web_core/v0_9\";\nimport { basicCatalog } from \"./catalog/basic\";\nimport type { LitComponentImplementation, LitRenderable } from \"./types\";\n\nconst DEFAULT_SURFACE_ID = \"default\";\nconst BASIC_CATALOG_ID =\n \"https://a2ui.org/specification/v0_9/basic_catalog.json\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nfunction getRecordProperty(\n record: Record<string, unknown>,\n key: string,\n): Record<string, unknown> | undefined {\n const value = record[key];\n return isRecord(value) ? value : undefined;\n}\n\nfunction getStringProperty(\n record: Record<string, unknown>,\n key: string,\n): string | undefined {\n const value = record[key];\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction getBooleanProperty(\n record: Record<string, unknown>,\n key: string,\n): boolean | undefined {\n const value = record[key];\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction getSurfaceId(payload: Record<string, unknown> | undefined): string {\n return payload\n ? (getStringProperty(payload, \"surfaceId\") ?? DEFAULT_SURFACE_ID)\n : DEFAULT_SURFACE_ID;\n}\n\nfunction getOperationSurfaceId(operation: A2uiMessage): string {\n if (\"createSurface\" in operation) return operation.createSurface.surfaceId;\n if (\"updateComponents\" in operation)\n return operation.updateComponents.surfaceId;\n if (\"updateDataModel\" in operation)\n return operation.updateDataModel.surfaceId;\n if (\"deleteSurface\" in operation) return operation.deleteSurface.surfaceId;\n return DEFAULT_SURFACE_ID;\n}\n\nfunction normalizeOperations(\n operations: unknown[],\n catalogId: string,\n): A2uiMessage[] {\n return operations.flatMap((operation): A2uiMessage[] => {\n if (!isRecord(operation)) return [];\n\n const createSurface = getRecordProperty(operation, \"createSurface\");\n if (createSurface) {\n const message = {\n version: \"v0.9\",\n createSurface: {\n surfaceId: getSurfaceId(createSurface),\n catalogId: getStringProperty(createSurface, \"catalogId\") ?? catalogId,\n theme: createSurface.theme ?? {},\n sendDataModel: getBooleanProperty(createSurface, \"sendDataModel\"),\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const updateComponents = getRecordProperty(operation, \"updateComponents\");\n if (updateComponents) {\n const components = updateComponents.components;\n const message = {\n version: \"v0.9\",\n updateComponents: {\n surfaceId: getSurfaceId(updateComponents),\n components: Array.isArray(components)\n ? components.map(normalizeComponent)\n : [],\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const updateDataModel = getRecordProperty(operation, \"updateDataModel\");\n if (updateDataModel) {\n const message = {\n version: \"v0.9\",\n updateDataModel: {\n surfaceId: getSurfaceId(updateDataModel),\n path: getStringProperty(updateDataModel, \"path\") ?? \"/\",\n value: updateDataModel.value,\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const deleteSurface = getRecordProperty(operation, \"deleteSurface\");\n if (deleteSurface) {\n const message = {\n version: \"v0.9\",\n deleteSurface: {\n surfaceId: getSurfaceId(deleteSurface),\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const beginRendering = getRecordProperty(operation, \"beginRendering\");\n if (beginRendering) {\n const message = {\n version: \"v0.9\",\n createSurface: {\n surfaceId: getSurfaceId(beginRendering),\n catalogId,\n theme: beginRendering.styles ?? {},\n sendDataModel: getBooleanProperty(beginRendering, \"sendDataModel\"),\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const surfaceUpdate = getRecordProperty(operation, \"surfaceUpdate\");\n if (surfaceUpdate) {\n const components = surfaceUpdate.components;\n const message = {\n version: \"v0.9\",\n updateComponents: {\n surfaceId: getSurfaceId(surfaceUpdate),\n components: Array.isArray(components)\n ? components.map(normalizeComponent)\n : [],\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n const dataModelUpdate = getRecordProperty(operation, \"dataModelUpdate\");\n if (dataModelUpdate) {\n const message = {\n version: \"v0.9\",\n updateDataModel: {\n surfaceId: getSurfaceId(dataModelUpdate),\n path: getStringProperty(dataModelUpdate, \"path\") ?? \"/\",\n value: dataModelUpdate.value ?? dataModelUpdate.contents,\n },\n } satisfies A2uiMessage;\n return [message];\n }\n\n return [];\n });\n}\n\nfunction normalizeComponent(component: unknown): unknown {\n if (!component || typeof component !== \"object\") return component;\n const record = component as {\n id?: string;\n component?: string | Record<string, unknown>;\n [key: string]: unknown;\n };\n if (!record.component || typeof record.component === \"string\") return record;\n\n const entries = Object.entries(record.component);\n if (entries.length !== 1) return record;\n const [componentName, props] = entries[0]!;\n return {\n id: record.id,\n component: componentName,\n ...(props && typeof props === \"object\" ? props : {}),\n };\n}\n\nfunction toClientEventMessage(action: unknown): Record<string, unknown> {\n const record = isRecord(action) ? action : {};\n return {\n userAction: {\n name: getStringProperty(record, \"name\") ?? \"unknown\",\n surfaceId: getStringProperty(record, \"surfaceId\") ?? DEFAULT_SURFACE_ID,\n sourceComponentId: getStringProperty(record, \"sourceComponentId\"),\n context: isRecord(record.context) ? record.context : {},\n timestamp:\n getStringProperty(record, \"timestamp\") ?? new Date().toISOString(),\n dataContextPath: getStringProperty(record, \"dataContextPath\"),\n },\n };\n}\n\nfunction defaultLoading() {\n return html`\n <div\n class=\"cpk:flex cpk:flex-col cpk:gap-3 cpk:rounded-xl cpk:border cpk:border-gray-100 cpk:bg-gray-50/50 cpk:p-5\"\n style=\"min-height: 120px;\"\n data-testid=\"a2ui-loading\"\n >\n <div class=\"cpk:flex cpk:items-center cpk:gap-2\">\n <div\n class=\"cpk:h-3 cpk:w-3 cpk:rounded-full cpk:bg-gray-200\"\n style=\"animation: cpk-a2ui-pulse 1.5s ease-in-out infinite;\"\n data-testid=\"a2ui-loading-dot\"\n ></div>\n <span class=\"cpk:text-xs cpk:font-medium cpk:text-gray-400\">\n Generating UI...\n </span>\n </div>\n <div class=\"cpk:flex cpk:flex-col cpk:gap-2\">\n ${[0.8, 0.6, 0.4].map(\n (width, i) => html`\n <div\n class=\"cpk:h-3 cpk:rounded cpk:bg-gray-200/70\"\n style=${`width: ${width * 100}%; animation: cpk-a2ui-pulse 1.5s ease-in-out ${i * 0.15}s infinite;`}\n data-testid=\"a2ui-loading-bar\"\n ></div>\n `,\n )}\n </div>\n <style>\n @keyframes cpk-a2ui-pulse {\n 0%,\n 100% {\n opacity: 0.4;\n }\n 50% {\n opacity: 1;\n }\n }\n </style>\n </div>\n `;\n}\n\nexport class CpkA2uiSurface extends LitElement {\n static properties = {\n operations: { attribute: false },\n catalog: { attribute: false },\n theme: { attribute: false },\n surfaceId: { attribute: false },\n loadingComponent: { attribute: false },\n };\n\n operations: unknown[] = [];\n catalog?: Catalog<LitComponentImplementation>;\n theme?: Record<string, unknown>;\n surfaceId?: string;\n loadingComponent?: () => LitRenderable;\n\n private processor: MessageProcessor<LitComponentImplementation> | null = null;\n private processorCatalog?: Catalog<LitComponentImplementation>;\n private lastOpsHash = \"\";\n private renderedSurfaceIds: string[] = [];\n private error: string | null = null;\n\n protected createRenderRoot() {\n return this;\n }\n\n protected willUpdate(changed: Map<string, unknown>) {\n if (changed.has(\"catalog\")) {\n this.processor = null;\n this.processorCatalog = undefined;\n this.lastOpsHash = \"\";\n this.renderedSurfaceIds = [];\n }\n\n if (\n changed.has(\"operations\") ||\n changed.has(\"catalog\") ||\n changed.has(\"theme\") ||\n changed.has(\"surfaceId\")\n ) {\n this.processOperations();\n }\n }\n\n private getCatalog(): Catalog<LitComponentImplementation> {\n return this.catalog ?? basicCatalog;\n }\n\n private getProcessor(): MessageProcessor<LitComponentImplementation> {\n const catalog = this.getCatalog();\n if (!this.processor || this.processorCatalog !== catalog) {\n this.processorCatalog = catalog;\n this.processor = new MessageProcessor([catalog], (action) => {\n const message = toClientEventMessage(action);\n this.dispatchEvent(\n new CustomEvent(\"a2ui-action\", {\n detail: message,\n bubbles: true,\n composed: true,\n }),\n );\n });\n }\n return this.processor;\n }\n\n private processOperations(): void {\n if (!Array.isArray(this.operations) || this.operations.length === 0) {\n this.renderedSurfaceIds = [];\n this.error = null;\n return;\n }\n\n const catalogId = this.getCatalog().id || BASIC_CATALOG_ID;\n const normalized = normalizeOperations(this.operations, catalogId);\n const hash = JSON.stringify({\n operations: normalized,\n surfaceId: this.surfaceId,\n theme: this.theme,\n });\n if (hash === this.lastOpsHash) return;\n this.lastOpsHash = hash;\n\n const grouped = new Map<string, A2uiMessage[]>();\n for (const operation of normalized) {\n const surfaceId = this.surfaceId ?? getOperationSurfaceId(operation);\n if (!grouped.has(surfaceId)) grouped.set(surfaceId, []);\n grouped.get(surfaceId)!.push(operation);\n }\n\n const processor = this.getProcessor();\n try {\n for (const [surfaceId, ops] of grouped) {\n const existing = processor.model.getSurface(surfaceId);\n let filtered = existing\n ? ops.filter((op) => !(\"createSurface\" in op))\n : ops;\n\n if (!existing && !filtered.some((op) => \"createSurface\" in op)) {\n filtered = [\n {\n version: \"v0.9\",\n createSurface: {\n surfaceId,\n catalogId,\n theme: this.theme ?? {},\n },\n },\n ...filtered,\n ];\n }\n processor.processMessages(filtered);\n }\n this.renderedSurfaceIds = [...grouped.keys()];\n this.error = null;\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n this.error = message;\n this.dispatchEvent(\n new CustomEvent(\"a2ui-error\", {\n detail: { error: err, message },\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n\n render() {\n if (this.error) {\n return html`\n <div\n class=\"cpk:rounded-lg cpk:border cpk:border-red-200 cpk:bg-red-50 cpk:p-3 cpk:text-sm cpk:text-red-700\"\n >\n A2UI render error: ${this.error}\n </div>\n `;\n }\n\n if (!this.renderedSurfaceIds.length) {\n return this.loadingComponent ? this.loadingComponent() : defaultLoading();\n }\n\n const processor = this.getProcessor();\n return html`\n <div\n class=\"cpk:flex cpk:min-h-0 cpk:flex-1 cpk:flex-col cpk:gap-6 cpk:overflow-auto cpk:py-6\"\n data-testid=\"a2ui-activity-renderer\"\n >\n ${this.renderedSurfaceIds.map((surfaceId) => {\n const surface = processor.model.getSurface(surfaceId);\n if (!surface) return nothing;\n return html`\n <div\n class=\"cpk:flex cpk:w-full cpk:flex-none cpk:flex-col cpk:gap-4\"\n data-surface-id=${surfaceId}\n >\n <div\n class=\"a2ui-surface cpk:flex cpk:flex-1\"\n data-surface-id=${surfaceId}\n >\n <cpk-a2ui-node\n .surface=${surface}\n .componentId=${\"root\"}\n .basePath=${\"/\"}\n ></cpk-a2ui-node>\n </div>\n </div>\n `;\n })}\n </div>\n `;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { LitComponentImplementation, LitRenderable } from "./types.cjs";
|
|
2
|
+
import { LitElement } from "lit";
|
|
3
|
+
import { Catalog } from "@a2ui/web_core/v0_9";
|
|
4
|
+
|
|
5
|
+
//#region src/web-components/surface.d.ts
|
|
6
|
+
declare class CpkA2uiSurface extends LitElement {
|
|
7
|
+
static properties: {
|
|
8
|
+
operations: {
|
|
9
|
+
attribute: boolean;
|
|
10
|
+
};
|
|
11
|
+
catalog: {
|
|
12
|
+
attribute: boolean;
|
|
13
|
+
};
|
|
14
|
+
theme: {
|
|
15
|
+
attribute: boolean;
|
|
16
|
+
};
|
|
17
|
+
surfaceId: {
|
|
18
|
+
attribute: boolean;
|
|
19
|
+
};
|
|
20
|
+
loadingComponent: {
|
|
21
|
+
attribute: boolean;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
operations: unknown[];
|
|
25
|
+
catalog?: Catalog<LitComponentImplementation>;
|
|
26
|
+
theme?: Record<string, unknown>;
|
|
27
|
+
surfaceId?: string;
|
|
28
|
+
loadingComponent?: () => LitRenderable;
|
|
29
|
+
private processor;
|
|
30
|
+
private processorCatalog?;
|
|
31
|
+
private lastOpsHash;
|
|
32
|
+
private renderedSurfaceIds;
|
|
33
|
+
private error;
|
|
34
|
+
protected createRenderRoot(): this;
|
|
35
|
+
protected willUpdate(changed: Map<string, unknown>): void;
|
|
36
|
+
private getCatalog;
|
|
37
|
+
private getProcessor;
|
|
38
|
+
private processOperations;
|
|
39
|
+
render(): LitRenderable;
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { CpkA2uiSurface };
|
|
43
|
+
//# sourceMappingURL=surface.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface.d.cts","names":[],"sources":["../../src/web-components/surface.ts"],"mappings":";;;;;cA6Oa,cAAA,SAAuB,UAAA;EAAA,OAC3B,UAAA;;;;;;;;;;;;;;;;;EAQP,UAAA;EACA,OAAA,GAAU,OAAA,CAAQ,0BAAA;EAClB,KAAA,GAAQ,MAAA;EACR,SAAA;EACA,gBAAA,SAAyB,aAAA;EAAA,QAEjB,SAAA;EAAA,QACA,gBAAA;EAAA,QACA,WAAA;EAAA,QACA,kBAAA;EAAA,QACA,KAAA;EAAA,UAEE,gBAAA,CAAA;EAAA,UAIA,UAAA,CAAW,OAAA,EAAS,GAAA;EAAA,QAkBtB,UAAA;EAAA,QAIA,YAAA;EAAA,QAkBA,iBAAA;EA8DR,MAAA,CAAA,GAAM,aAAA;AAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { LitComponentImplementation, LitRenderable } from "./types.mjs";
|
|
2
|
+
import { LitElement } from "lit";
|
|
3
|
+
import { Catalog } from "@a2ui/web_core/v0_9";
|
|
4
|
+
|
|
5
|
+
//#region src/web-components/surface.d.ts
|
|
6
|
+
declare class CpkA2uiSurface extends LitElement {
|
|
7
|
+
static properties: {
|
|
8
|
+
operations: {
|
|
9
|
+
attribute: boolean;
|
|
10
|
+
};
|
|
11
|
+
catalog: {
|
|
12
|
+
attribute: boolean;
|
|
13
|
+
};
|
|
14
|
+
theme: {
|
|
15
|
+
attribute: boolean;
|
|
16
|
+
};
|
|
17
|
+
surfaceId: {
|
|
18
|
+
attribute: boolean;
|
|
19
|
+
};
|
|
20
|
+
loadingComponent: {
|
|
21
|
+
attribute: boolean;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
operations: unknown[];
|
|
25
|
+
catalog?: Catalog<LitComponentImplementation>;
|
|
26
|
+
theme?: Record<string, unknown>;
|
|
27
|
+
surfaceId?: string;
|
|
28
|
+
loadingComponent?: () => LitRenderable;
|
|
29
|
+
private processor;
|
|
30
|
+
private processorCatalog?;
|
|
31
|
+
private lastOpsHash;
|
|
32
|
+
private renderedSurfaceIds;
|
|
33
|
+
private error;
|
|
34
|
+
protected createRenderRoot(): this;
|
|
35
|
+
protected willUpdate(changed: Map<string, unknown>): void;
|
|
36
|
+
private getCatalog;
|
|
37
|
+
private getProcessor;
|
|
38
|
+
private processOperations;
|
|
39
|
+
render(): LitRenderable;
|
|
40
|
+
}
|
|
41
|
+
//#endregion
|
|
42
|
+
export { CpkA2uiSurface };
|
|
43
|
+
//# sourceMappingURL=surface.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface.d.mts","names":[],"sources":["../../src/web-components/surface.ts"],"mappings":";;;;;cA6Oa,cAAA,SAAuB,UAAA;EAAA,OAC3B,UAAA;;;;;;;;;;;;;;;;;EAQP,UAAA;EACA,OAAA,GAAU,OAAA,CAAQ,0BAAA;EAClB,KAAA,GAAQ,MAAA;EACR,SAAA;EACA,gBAAA,SAAyB,aAAA;EAAA,QAEjB,SAAA;EAAA,QACA,gBAAA;EAAA,QACA,WAAA;EAAA,QACA,kBAAA;EAAA,QACA,KAAA;EAAA,UAEE,gBAAA,CAAA;EAAA,UAIA,UAAA,CAAW,OAAA,EAAS,GAAA;EAAA,QAkBtB,UAAA;EAAA,QAIA,YAAA;EAAA,QAkBA,iBAAA;EA8DR,MAAA,CAAA,GAAM,aAAA;AAAA"}
|