@zhama/a2ui-core 0.6.0 → 0.9.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/README.md CHANGED
@@ -30,7 +30,7 @@ import {
30
30
  // Builders
31
31
  text, column, button, h1,
32
32
  createSurface, updateComponents, updateDataModel,
33
- createV09Messages,
33
+ createMessages,
34
34
 
35
35
  // Surface
36
36
  SURFACE_IDS, createA2UISurface,
@@ -43,7 +43,7 @@ import {
43
43
 
44
44
  // Types
45
45
  type ComponentInstance,
46
- type ServerToClientMessageV09,
46
+ type ServerToClientMessage,
47
47
  } from '@zhama/a2ui-core';
48
48
 
49
49
  // Create components
@@ -52,7 +52,7 @@ const greeting = text({ path: '/user/name' }, { id: 'greeting' });
52
52
  const root = column(['title', 'greeting'], { id: 'root' });
53
53
 
54
54
  // Create messages
55
- const messages = createV09Messages({
55
+ const messages = createMessages({
56
56
  surfaceId: SURFACE_IDS.CHAT,
57
57
  components: [title, greeting, root],
58
58
  dataModel: { user: { name: 'John' } },
@@ -69,10 +69,10 @@ You can import specific modules for tree-shaking:
69
69
 
70
70
  ```typescript
71
71
  // Types only
72
- import type { ComponentInstance, ServerToClientMessageV09 } from '@zhama/a2ui-core/types';
72
+ import type { ComponentInstance, ServerToClientMessage } from '@zhama/a2ui-core/types';
73
73
 
74
74
  // Builders only
75
- import { text, column, createV09Messages } from '@zhama/a2ui-core/builders';
75
+ import { text, column, createMessages } from '@zhama/a2ui-core/builders';
76
76
 
77
77
  // Validators only
78
78
  import { validateMessage, validateMessages } from '@zhama/a2ui-core/validators';
@@ -103,7 +103,7 @@ list(children: ChildrenProperty, options?: ListOptions): ComponentInstance
103
103
  card(childId: string, options?: CardOptions): ComponentInstance
104
104
  tabs(items: TabItem[], options?: TabsOptions): ComponentInstance
105
105
  divider(options?: DividerOptions): ComponentInstance
106
- modal(entryPointChildId: string, contentChildId: string, options?: ModalOptions): ComponentInstance
106
+ modal(triggerId: string, contentId: string, options?: ModalOptions): ComponentInstance
107
107
 
108
108
  // Interactive components
109
109
  button(childId: string, action: Action, options?: ButtonOptions): ComponentInstance
@@ -131,11 +131,11 @@ createSurface(surfaceId: string, catalogId?: string): CreateSurfaceMessage
131
131
  updateComponents(surfaceId: string, components: ComponentInstance[]): UpdateComponentsMessage
132
132
  updateDataModel(surfaceId: string, value: unknown, path?: string, op?: 'add' | 'replace' | 'remove'): UpdateDataModelMessage
133
133
  deleteSurface(surfaceId: string): DeleteSurfaceMessage
134
- createV09Messages(options): ServerToClientMessageV09[]
134
+ createMessages(options): ServerToClientMessage[]
135
135
 
136
136
  // Utilities
137
- messagesToJsonl(messages: ServerToClientMessageV09[]): string
138
- jsonlToMessages(jsonl: string): ServerToClientMessageV09[]
137
+ messagesToJsonl(messages: ServerToClientMessage[]): string
138
+ jsonlToMessages(jsonl: string): ServerToClientMessage[]
139
139
  ```
140
140
 
141
141
  ### Surface Module
@@ -154,7 +154,7 @@ SURFACE_IDS.NOTIFICATION // '@notification' - Notifications
154
154
  // Surface creation functions
155
155
  createA2UISurface(rootId: string, components: ComponentInstance[], surfaceId?: string): SurfaceResult
156
156
  createA2UISurfaceWithData(rootId: string, components: ComponentInstance[], dataModel: DataObject, surfaceId?: string): SurfaceResult
157
- createDeleteSurfaceMessage(surfaceId: string): ServerToClientMessageV09
157
+ createDeleteSurfaceMessage(surfaceId: string): ServerToClientMessage
158
158
 
159
159
  // Convenience functions
160
160
  createChatSurface(rootId: string, components: ComponentInstance[]): SurfaceResult
@@ -178,7 +178,7 @@ normalizePath(path: string, pathMappings?: PathMappings): string
178
178
  ```typescript
179
179
  validateMessage(message: ServerToClientMessage, options?: ValidationOptions): ValidationResult
180
180
  validateMessages(messages: ServerToClientMessage[], options?: ValidationOptions): ValidationResult
181
- validateV09Message(message: ServerToClientMessageV09, options?: ValidationOptions): ValidationResult
181
+ validateMessage(message: ServerToClientMessage, options?: ValidationOptions): ValidationResult
182
182
  ```
183
183
 
184
184
  ### Utils
@@ -1,3 +1,3 @@
1
- 'use strict';var l=0;function i(t="comp"){return `${t}_${Date.now()}_${l++}`}function I(){l=0;}function y(){return l}function p(t,e={}){let{id:n=i("text"),weight:o,usageHint:r,classes:a}=e;return {id:n,component:"Text",text:t,...o!==void 0&&{weight:o},...r&&{usageHint:r},...a&&a.length>0&&{classes:a}}}function S(t,e={}){let{id:n=i("image"),weight:o,fit:r,usageHint:a}=e;return {id:n,component:"Image",url:t,...o!==void 0&&{weight:o},...r&&{fit:r},...a&&{usageHint:a}}}function b(t,e={}){let{id:n=i("icon"),weight:o}=e;return {id:n,component:"Icon",name:t,...o!==void 0&&{weight:o}}}function T(t,e={}){let{id:n=i("video"),weight:o}=e;return {id:n,component:"Video",url:t,...o!==void 0&&{weight:o}}}function v(t,e={}){let{id:n=i("audio"),weight:o,description:r}=e;return {id:n,component:"AudioPlayer",url:t,...o!==void 0&&{weight:o},...r&&{description:r}}}function D(t,e={}){let{id:n=i("row"),weight:o,alignment:r,distribution:a}=e;return {id:n,component:"Row",children:t,...o!==void 0&&{weight:o},...r&&{alignment:r},...a&&{distribution:a}}}function P(t,e={}){let{id:n=i("column"),weight:o,alignment:r,distribution:a,classes:s}=e;return {id:n,component:"Column",children:t,...o!==void 0&&{weight:o},...r&&{alignment:r},...a&&{distribution:a},...s&&s.length>0&&{classes:s}}}function V(t,e={}){let{id:n=i("list"),weight:o,direction:r,alignment:a}=e;return {id:n,component:"List",children:t,...o!==void 0&&{weight:o},...r&&{direction:r},...a&&{alignment:a}}}function A(t,e={}){let{id:n=i("card"),weight:o,classes:r}=e;return {id:n,component:"Card",child:t,...o!==void 0&&{weight:o},...r&&r.length>0&&{classes:r}}}function w(t,e={}){let{id:n=i("tabs"),weight:o}=e;return {id:n,component:"Tabs",tabItems:t.map(r=>({title:r.title,child:r.childId})),...o!==void 0&&{weight:o}}}function U(t={}){let{id:e=i("divider"),weight:n,axis:o}=t;return {id:e,component:"Divider",...n!==void 0&&{weight:n},...o&&{axis:o}}}function E(t,e,n={}){let{id:o=i("modal"),weight:r}=n;return {id:o,component:"Modal",entryPointChild:t,contentChild:e,...r!==void 0&&{weight:r}}}function m(t,e,n={}){let{id:o=i("button"),weight:r,primary:a}=n;return {id:o,component:"Button",child:t,action:e,...r!==void 0&&{weight:r},...a!==void 0&&{primary:a}}}function j(t,e,n={}){let{id:o=i("checkbox"),weight:r}=n;return {id:o,component:"CheckBox",label:t,value:e,...r!==void 0&&{weight:r}}}function k(t,e,n={}){let{id:o=i("textfield"),weight:r,usageHint:a,validationRegexp:s}=n;return {id:o,component:"TextField",label:t,...e!==void 0&&{text:e},...r!==void 0&&{weight:r},...a&&{usageHint:a},...s&&{validationRegexp:s}}}function _(t,e={}){let{id:n=i("datetime"),weight:o,enableDate:r,enableTime:a,outputFormat:s,label:u}=e;return {id:n,component:"DateTimeInput",value:t,...o!==void 0&&{weight:o},...r!==void 0&&{enableDate:r},...a!==void 0&&{enableTime:a},...s&&{outputFormat:s},...u&&{label:u}}}function H(t,e,n,o={}){let{id:r=i("choice"),weight:a,label:s}=o;return {id:r,component:"ChoicePicker",options:t,value:e,usageHint:n,...a!==void 0&&{weight:a},...s&&{label:s}}}function B(t,e={}){let{id:n=i("slider"),weight:o,label:r,min:a,max:s}=e;return {id:n,component:"Slider",value:t,...o!==void 0&&{weight:o},...r&&{label:r},...a!==void 0&&{min:a},...s!==void 0&&{max:s}}}function N(t,e,n={}){let o=n.textId??i("btn_text"),r=p(t,{id:o}),a=m(o,e,n);return [r,a]}function R(t,e={}){return p(t,{...e,usageHint:"h1"})}function L(t,e={}){return p(t,{...e,usageHint:"h2"})}function F(t,e={}){return p(t,{...e,usageHint:"h3"})}function $(t,e={}){return p(t,{...e,usageHint:"h4"})}function G(t,e={}){return p(t,{...e,usageHint:"h5"})}function z(t,e={}){return p(t,{...e,usageHint:"caption"})}function J(t,e={}){return p(t,{...e,usageHint:"body"})}var d="https://a2ui.dev/specification/0.9/standard_catalog_definition.json";function f(t,e=d){return {createSurface:{surfaceId:t,catalogId:e}}}function C(t,e){return {updateComponents:{surfaceId:t,components:e}}}function x(t,e,n,o="replace"){return {updateDataModel:{surfaceId:t,...n&&{path:n},op:o,...o!=="remove"&&{value:e}}}}function W(t){return {deleteSurface:{surfaceId:t}}}function X(t){let{surfaceId:e,catalogId:n=d,components:o,dataModel:r}=t,a=[f(e,n),C(e,o)];return r&&a.push(x(e,r)),a}function Y(t){return t.map(e=>JSON.stringify(e)).join(`
2
- `)}function K(t){return t.split(`
3
- `).filter(e=>e.trim()).map(e=>JSON.parse(e))}var O={};function q(t,e=""){let n=[];for(let[o,r]of Object.entries(t)){let a=e?`${e}/${o}`:`/${o}`;n.push(c(a,r));}return n}function c(t,e){if(e==null)return {key:t,valueString:""};if(typeof e=="string")return {key:t,valueString:e};if(typeof e=="number")return {key:t,valueNumber:e};if(typeof e=="boolean")return {key:t,valueBoolean:e};if(Array.isArray(e))return {key:t,valueMap:e.map((n,o)=>c(String(o),n))};if(typeof e=="object"){let n=[];for(let[o,r]of Object.entries(e))n.push(c(o,r));return {key:t,valueMap:n}}return {key:t,valueString:String(e)}}function h(t,e={}){let n=t.replace(/\./g,"/");n.startsWith("/")||(n=`/${n}`);for(let[o,r]of Object.entries(e)){let a=new RegExp(`^/${o}(/|$)`);a.test(n)&&(n=n.replace(a,`/${r}$1`));}return n}function Q(t,e="",n=O){let o=[];for(let r of t){let a=r.path.startsWith("/")?r.path:`${e}/${r.path}`,s=h(a,n);if(r.value!==null&&typeof r.value=="object"&&!Array.isArray(r.value)){let u=g(r.value,s);o.push(...u);}else o.push(c(s,r.value));}return o}function g(t,e){let n=[];for(let[o,r]of Object.entries(t)){let a=`${e}/${o}`;if(r!==null&&typeof r=="object"&&!Array.isArray(r)){let s=g(r,a);n.push(...s);}else n.push(c(a,r));}return n}function M(t){let e={};for(let n of t){let o=n.key.startsWith("/")?n.key.slice(1):n.key;n.valueString!==void 0?e[o]=n.valueString:n.valueNumber!==void 0?e[o]=n.valueNumber:n.valueBoolean!==void 0?e[o]=n.valueBoolean:n.valueMap!==void 0&&(e[o]=M(n.valueMap));}return e}exports.DEFAULT_PATH_MAPPINGS=O;exports.audioPlayer=v;exports.body=J;exports.button=m;exports.caption=z;exports.card=A;exports.checkbox=j;exports.choicePicker=H;exports.column=P;exports.createSurface=f;exports.createV09Messages=X;exports.dateTimeInput=_;exports.deleteSurface=W;exports.divider=U;exports.flattenObjectToValueMap=g;exports.generateId=i;exports.getIdCounter=y;exports.h1=R;exports.h2=L;exports.h3=F;exports.h4=$;exports.h5=G;exports.icon=b;exports.image=S;exports.jsonlToMessages=K;exports.list=V;exports.messagesToJsonl=Y;exports.modal=E;exports.normalizePath=h;exports.objectToValueMap=q;exports.resetIdCounter=I;exports.row=D;exports.slider=B;exports.tabs=w;exports.text=p;exports.textButton=N;exports.textField=k;exports.updateComponents=C;exports.updateDataModel=x;exports.updatesToValueMap=Q;exports.valueMapToObject=M;exports.valueToValueMap=c;exports.video=T;
1
+ 'use strict';var g=0;function p(t="comp"){return `${t}_${Date.now()}_${g++}`}function b(){g=0;}function S(){return g}function M(t,e){let o={name:t};return e&&(o.context=e),{event:o}}function d(t,e={}){let{id:o=p("text"),weight:i,variant:n,accessibility:a}=e;return {id:o,component:"Text",text:t,...i!==void 0&&{weight:i},...n&&{variant:n},...a&&{accessibility:a}}}function T(t,e={}){let{id:o=p("image"),weight:i,fit:n,variant:a,accessibility:r}=e;return {id:o,component:"Image",url:t,...i!==void 0&&{weight:i},...n&&{fit:n},...a&&{variant:a},...r&&{accessibility:r}}}function v(t,e={}){let{id:o=p("icon"),weight:i,accessibility:n}=e;return {id:o,component:"Icon",name:t,...i!==void 0&&{weight:i},...n&&{accessibility:n}}}function A(t,e={}){let{id:o=p("video"),weight:i,accessibility:n}=e;return {id:o,component:"Video",url:t,...i!==void 0&&{weight:i},...n&&{accessibility:n}}}function k(t,e={}){let{id:o=p("audio"),weight:i,description:n,accessibility:a}=e;return {id:o,component:"AudioPlayer",url:t,...i!==void 0&&{weight:i},...n&&{description:n},...a&&{accessibility:a}}}function w(t,e={}){let{id:o=p("row"),weight:i,align:n,justify:a,accessibility:r}=e;return {id:o,component:"Row",children:t,...i!==void 0&&{weight:i},...n&&{align:n},...a&&{justify:a},...r&&{accessibility:r}}}function V(t,e={}){let{id:o=p("column"),weight:i,align:n,justify:a,accessibility:r}=e;return {id:o,component:"Column",children:t,...i!==void 0&&{weight:i},...n&&{align:n},...a&&{justify:a},...r&&{accessibility:r}}}function P(t,e={}){let{id:o=p("list"),weight:i,direction:n,align:a,accessibility:r}=e;return {id:o,component:"List",children:t,...i!==void 0&&{weight:i},...n&&{direction:n},...a&&{align:a},...r&&{accessibility:r}}}function L(t,e={}){let{id:o=p("card"),weight:i,accessibility:n}=e;return {id:o,component:"Card",child:t,...i!==void 0&&{weight:i},...n&&{accessibility:n}}}function R(t,e={}){let{id:o=p("tabs"),weight:i,accessibility:n}=e;return {id:o,component:"Tabs",tabs:t.map(a=>({title:a.title,child:a.childId})),...i!==void 0&&{weight:i},...n&&{accessibility:n}}}function F(t={}){let{id:e=p("divider"),weight:o,axis:i,accessibility:n}=t;return {id:e,component:"Divider",...o!==void 0&&{weight:o},...i&&{axis:i},...n&&{accessibility:n}}}function U(t,e,o={}){let{id:i=p("modal"),weight:n,accessibility:a}=o;return {id:i,component:"Modal",trigger:t,content:e,...n!==void 0&&{weight:n},...a&&{accessibility:a}}}function y(t,e,o={}){let{id:i=p("button"),weight:n,variant:a,checks:r,accessibility:s}=o;return {id:i,component:"Button",child:t,action:e,...n!==void 0&&{weight:n},...a&&{variant:a},...r&&r.length>0&&{checks:r},...s&&{accessibility:s}}}function B(t,e,o={}){let{id:i=p("checkbox"),weight:n,checks:a,accessibility:r}=o;return {id:i,component:"CheckBox",label:t,value:e,...n!==void 0&&{weight:n},...a&&a.length>0&&{checks:a},...r&&{accessibility:r}}}function E(t,e,o={}){let{id:i=p("textfield"),weight:n,variant:a,checks:r,accessibility:s}=o;return {id:i,component:"TextField",label:t,...e!==void 0&&{value:e},...n!==void 0&&{weight:n},...a&&{variant:a},...r&&r.length>0&&{checks:r},...s&&{accessibility:s}}}function _(t,e={}){let{id:o=p("datetime"),weight:i,enableDate:n,enableTime:a,min:r,max:s,label:c,checks:m,accessibility:u}=e;return {id:o,component:"DateTimeInput",value:t,...i!==void 0&&{weight:i},...n!==void 0&&{enableDate:n},...a!==void 0&&{enableTime:a},...r&&{min:r},...s&&{max:s},...c&&{label:c},...m&&m.length>0&&{checks:m},...u&&{accessibility:u}}}function j(t,e,o={}){let{id:i=p("choice"),weight:n,label:a,variant:r,checks:s,accessibility:c}=o;return {id:i,component:"ChoicePicker",options:t,value:e,...n!==void 0&&{weight:n},...a&&{label:a},...r&&{variant:r},...s&&s.length>0&&{checks:s},...c&&{accessibility:c}}}function N(t,e,o,i={}){let{id:n=p("slider"),weight:a,label:r,checks:s,accessibility:c}=i;return {id:n,component:"Slider",value:t,min:e,max:o,...a!==void 0&&{weight:a},...r&&{label:r},...s&&s.length>0&&{checks:s},...c&&{accessibility:c}}}function l(t,e,o={}){let{id:i=p("chart"),weight:n,title:a,xAxis:r,yAxis:s,legend:c,tooltip:m,height:u,width:f,echartsOption:x,accessibility:h}=o;return {id:i,component:"Chart",chartType:t,series:e,...n!==void 0&&{weight:n},...a&&{title:a},...r&&{xAxis:r},...s&&{yAxis:s},...c!==void 0&&{legend:c},...m!==void 0&&{tooltip:m},...u!==void 0&&{height:u},...f!==void 0&&{width:f},...x&&{echartsOption:x},...h&&{accessibility:h}}}function G(t,e={}){return l("line",t,e)}function $(t,e={}){return l("bar",t,e)}function J(t,e={}){return l("pie",t,e)}function z(t,e,o={}){let i=o.textId??p("btn_text"),n=d(t,{id:i}),a=y(i,e,o);return [n,a]}function H(t,e={}){return d(t,{...e,variant:"h1"})}function W(t,e={}){return d(t,{...e,variant:"h2"})}function q(t,e={}){return d(t,{...e,variant:"h3"})}function K(t,e={}){return d(t,{...e,variant:"h4"})}function Q(t,e={}){return d(t,{...e,variant:"h5"})}function X(t,e={}){return d(t,{...e,variant:"caption"})}function Y(t,e={}){return d(t,{...e,variant:"body"})}var C="https://a2ui.dev/specification/v0_9/standard_catalog.json";function O(t,e={}){let{catalogId:o=C,theme:i,sendDataModel:n}=e;return {createSurface:{surfaceId:t,catalogId:o,...i&&{theme:i},...n!==void 0&&{sendDataModel:n}}}}function D(t,e){return {updateComponents:{surfaceId:t,components:e}}}function I(t,e,o){return {updateDataModel:{surfaceId:t,...o&&{path:o},...e!==void 0&&{value:e}}}}function Z(t){return {deleteSurface:{surfaceId:t}}}function ee(t){let{surfaceId:e,catalogId:o,theme:i,sendDataModel:n,components:a,dataModel:r}=t,s=[O(e,{catalogId:o,theme:i,sendDataModel:n}),D(e,a)];return r&&s.push(I(e,r)),s}function te(t){return t.map(e=>JSON.stringify(e)).join(`
2
+ `)}function ne(t){return t.split(`
3
+ `).filter(e=>e.trim()).map(e=>JSON.parse(e))}var oe={};function ie(t,e={}){let o=t.replace(/\./g,"/");o.startsWith("/")||(o=`/${o}`);for(let[i,n]of Object.entries(e)){let a=new RegExp(`^/${i}(/|$)`);a.test(o)&&(o=o.replace(a,`/${n}$1`));}return o}exports.DEFAULT_PATH_MAPPINGS=oe;exports.audioPlayer=k;exports.barChart=$;exports.body=Y;exports.button=y;exports.caption=X;exports.card=L;exports.chart=l;exports.checkbox=B;exports.choicePicker=j;exports.column=V;exports.createMessages=ee;exports.createSurface=O;exports.dateTimeInput=_;exports.deleteSurface=Z;exports.divider=F;exports.eventAction=M;exports.generateId=p;exports.getIdCounter=S;exports.h1=H;exports.h2=W;exports.h3=q;exports.h4=K;exports.h5=Q;exports.icon=v;exports.image=T;exports.jsonlToMessages=ne;exports.lineChart=G;exports.list=P;exports.messagesToJsonl=te;exports.modal=U;exports.normalizePath=ie;exports.pieChart=J;exports.resetIdCounter=b;exports.row=w;exports.slider=N;exports.tabs=R;exports.text=d;exports.textButton=z;exports.textField=E;exports.updateComponents=D;exports.updateDataModel=I;exports.video=A;