@zhama/a2ui 0.10.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/LICENSE +22 -0
- package/README.md +891 -0
- package/dist/context/index.cjs +1 -0
- package/dist/context/index.js +1 -0
- package/dist/data/index.cjs +2 -0
- package/dist/data/index.js +2 -0
- package/dist/events/index.cjs +1 -0
- package/dist/events/index.js +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.js +2 -0
- package/dist/styles/index.cjs +1 -0
- package/dist/styles/index.js +1 -0
- package/dist/types/index.cjs +1 -0
- package/dist/types/index.js +0 -0
- package/dist/ui/index.cjs +2 -0
- package/dist/ui/index.js +2 -0
- package/package.json +168 -0
- package/src/styles/a2ui-variables.css +106 -0
- package/tailwind.preset.js +326 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime');function e(){return {}}var u={components:{AudioPlayer:e(),Button:{"a2ui-btn":true,"inline-flex":true,"items-center":true,"justify-center":true,"whitespace-nowrap":true,"rounded-xl":true,"text-xs":true,"font-medium":true,"transition-all":true,"duration-300":true,"disabled:pointer-events-none":true,"disabled:opacity-50":true,"active:scale-95":true,"bg-primary":true,"text-primary-foreground":true,"hover:bg-primary/90":true,"shadow-sm":true,"h-9":true,"px-4":true,"py-2":true},Card:{"a2ui-card":true,group:true,relative:true,"rounded-2xl":true,border:true,"border-border/50":true,"bg-card":true,"text-card-foreground":true,"shadow-sm":true,"transition-all":true,"duration-300":true,"hover:shadow-md":true,"hover:border-primary/40":true,"hover:-translate-y-1":true,"p-5":true,"overflow-hidden":true},Column:{"a2ui-column":true,flex:true,"flex-col":true,"space-y-4":true},CheckBox:{container:{"a2ui-checkbox":true,flex:true,"items-center":true,"gap-2":true},element:{"w-4":true,"h-4":true},label:{"text-sm":true,"font-medium":true}},DateTimeInput:{container:{"a2ui-datetime":true,flex:true,"flex-col":true,"gap-1":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"transition-colors":true},label:{"text-sm":true,"font-medium":true}},Divider:{"a2ui-divider":true,"border-t":true,"border-border/50":true,"my-8":true},Image:{all:{"a2ui-image":true,"max-w-full":true,"h-auto":true},icon:{"w-6":true,"h-6":true},avatar:{"w-10":true,"h-10":true,"rounded-full":true},smallFeature:{"w-24":true,"h-24":true},mediumFeature:{"w-48":true,"h-48":true},largeFeature:{"w-full":true,"max-h-96":true},header:{"w-full":true,"h-32":true,"object-cover":true}},Icon:{"a2ui-icon":true,"w-5":true,"h-5":true},List:{"a2ui-list":true,grid:true,"grid-cols-1":true,"md:grid-cols-2":true,"gap-4":true,"w-full":true},Modal:{backdrop:{fixed:true,"inset-0":true,"bg-black/50":true,flex:true,"items-center":true,"justify-center":true,"z-50":true},element:{"bg-card":true,"rounded-lg":true,"p-6":true,"max-w-lg":true,"w-full":true,"mx-4":true,"shadow-xl":true,border:true,"border-border":true,"border-white/60":true}},MultipleChoice:{container:{"a2ui-multichoice":true,flex:true,"flex-col":true,"gap-2":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"w-full":true},label:{"text-sm":true,"font-medium":true}},Row:{"a2ui-row":true,flex:true,"flex-row":true,"items-center":true,"justify-between":true,"gap-6":true,"w-full":true},Slider:{container:{"a2ui-slider":true,flex:true,"flex-col":true,"gap-1":true},element:{"w-full":true},label:{"text-sm":true,"font-medium":true}},Tabs:{container:{"a2ui-tabs":true,flex:true,"flex-col":true,"space-y-4":true},element:{flex:true,"border-b":true,"border-border":true},controls:{all:{"px-4":true,"py-2":true,"text-sm":true,"font-medium":true,"cursor-pointer":true,"transition-colors":true,"rounded-t-md":true},selected:{"border-b-2":true,"border-primary":true,"text-primary":true,"-mb-px":true}}},Text:{all:{"a2ui-text":true},h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true,"mb-4":true},h2:{"text-xl":true,"font-semibold":true,"mb-2":true},h3:{"text-lg":true,"font-medium":true,"mb-1":true},h4:{"text-base":true,"font-medium":true},h5:{"text-sm":true,"font-medium":true},h6:{"text-xs":true,"font-medium":true},body:{"text-base":true,"leading-relaxed":true,"text-foreground/90":true},caption:{"text-sm":true,"text-muted-foreground":true,"leading-relaxed":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},TextField:{container:{"a2ui-textfield":true,flex:true,"flex-col":true,"gap-1.5":true},element:{flex:true,"h-10":true,"w-full":true,"rounded-md":true,border:true,"border-input":true,"bg-background":true,"px-3":true,"py-2":true,"text-sm":true,"ring-offset-background":true,"transition-colors":true,"placeholder:text-muted-foreground":true,"focus-visible:outline-none":true,"focus-visible:ring-2":true,"focus-visible:ring-ring":true,"focus-visible:ring-offset-2":true,"disabled:cursor-not-allowed":true,"disabled:opacity-50":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},Video:{"a2ui-video":true,"w-full":true,"rounded-2xl":true,border:true,"border-border/50":true}},elements:{a:{"text-primary":true,"underline-offset-4":true,"hover:underline":true,"transition-colors":true},audio:e(),body:{"text-base":true},button:e(),h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true},h2:{"text-xl":true,"font-semibold":true},h3:{"text-lg":true,"font-bold":true},h4:{"text-base":true,"font-semibold":true},h5:{"text-base":true,"font-medium":true},iframe:e(),input:e(),p:{"text-base":true,"leading-relaxed":true},pre:{"font-mono":true,"text-sm":true,"bg-muted":true,"p-4":true,"rounded-md":true,"overflow-x-auto":true,border:true,"border-border":true},textarea:e(),video:e()},markdown:{p:["text-[15px]","leading-[1.7]","mb-3"],h1:["text-xl","font-bold","tracking-tight","mt-6","mb-4"],h2:["text-[17px]","font-semibold","mt-5","mb-3"],h3:["text-[15px]","font-semibold","mt-4","mb-2"],h4:["text-[15px]","font-medium","mt-3","mb-2"],h5:["text-sm","font-medium","mt-3","mb-2"],ul:["list-disc","list-outside","ml-5","mb-3","space-y-1.5"],ol:["list-decimal","list-outside","ml-5","mb-3","space-y-1.5"],li:["text-[15px]","leading-[1.7]","pl-1"],a:["text-primary","underline-offset-2","hover:underline","font-medium"],strong:["font-semibold"],em:["not-italic","opacity-80"],code:["font-mono","text-[13px]","bg-muted/60","px-1.5","py-0.5","rounded","border","border-border/50"],blockquote:["border-l-3","border-primary/40","pl-4","py-2","text-muted-foreground","bg-muted/30","rounded-r","mb-3","text-[14px]"]}};var o=react.createContext(u);function b({theme:t=u,children:r}){return jsxRuntime.jsx(o.Provider,{value:t,children:r})}function g(){return react.useContext(o)}var n=react.createContext({processor:null,surfaceId:null});function v({processor:t,surfaceId:r="@default",children:i}){return jsxRuntime.jsx(n.Provider,{value:{processor:t,surfaceId:r},children:i})}function T(){return react.useContext(n)}exports.ProcessorContext=n;exports.ProcessorProvider=v;exports.ThemeContext=o;exports.ThemeProvider=b;exports.useProcessor=T;exports.useTheme=g;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';function e(){return {}}var u={components:{AudioPlayer:e(),Button:{"a2ui-btn":true,"inline-flex":true,"items-center":true,"justify-center":true,"whitespace-nowrap":true,"rounded-xl":true,"text-xs":true,"font-medium":true,"transition-all":true,"duration-300":true,"disabled:pointer-events-none":true,"disabled:opacity-50":true,"active:scale-95":true,"bg-primary":true,"text-primary-foreground":true,"hover:bg-primary/90":true,"shadow-sm":true,"h-9":true,"px-4":true,"py-2":true},Card:{"a2ui-card":true,group:true,relative:true,"rounded-2xl":true,border:true,"border-border/50":true,"bg-card":true,"text-card-foreground":true,"shadow-sm":true,"transition-all":true,"duration-300":true,"hover:shadow-md":true,"hover:border-primary/40":true,"hover:-translate-y-1":true,"p-5":true,"overflow-hidden":true},Column:{"a2ui-column":true,flex:true,"flex-col":true,"space-y-4":true},CheckBox:{container:{"a2ui-checkbox":true,flex:true,"items-center":true,"gap-2":true},element:{"w-4":true,"h-4":true},label:{"text-sm":true,"font-medium":true}},DateTimeInput:{container:{"a2ui-datetime":true,flex:true,"flex-col":true,"gap-1":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"transition-colors":true},label:{"text-sm":true,"font-medium":true}},Divider:{"a2ui-divider":true,"border-t":true,"border-border/50":true,"my-8":true},Image:{all:{"a2ui-image":true,"max-w-full":true,"h-auto":true},icon:{"w-6":true,"h-6":true},avatar:{"w-10":true,"h-10":true,"rounded-full":true},smallFeature:{"w-24":true,"h-24":true},mediumFeature:{"w-48":true,"h-48":true},largeFeature:{"w-full":true,"max-h-96":true},header:{"w-full":true,"h-32":true,"object-cover":true}},Icon:{"a2ui-icon":true,"w-5":true,"h-5":true},List:{"a2ui-list":true,grid:true,"grid-cols-1":true,"md:grid-cols-2":true,"gap-4":true,"w-full":true},Modal:{backdrop:{fixed:true,"inset-0":true,"bg-black/50":true,flex:true,"items-center":true,"justify-center":true,"z-50":true},element:{"bg-card":true,"rounded-lg":true,"p-6":true,"max-w-lg":true,"w-full":true,"mx-4":true,"shadow-xl":true,border:true,"border-border":true,"border-white/60":true}},MultipleChoice:{container:{"a2ui-multichoice":true,flex:true,"flex-col":true,"gap-2":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"w-full":true},label:{"text-sm":true,"font-medium":true}},Row:{"a2ui-row":true,flex:true,"flex-row":true,"items-center":true,"justify-between":true,"gap-6":true,"w-full":true},Slider:{container:{"a2ui-slider":true,flex:true,"flex-col":true,"gap-1":true},element:{"w-full":true},label:{"text-sm":true,"font-medium":true}},Tabs:{container:{"a2ui-tabs":true,flex:true,"flex-col":true,"space-y-4":true},element:{flex:true,"border-b":true,"border-border":true},controls:{all:{"px-4":true,"py-2":true,"text-sm":true,"font-medium":true,"cursor-pointer":true,"transition-colors":true,"rounded-t-md":true},selected:{"border-b-2":true,"border-primary":true,"text-primary":true,"-mb-px":true}}},Text:{all:{"a2ui-text":true},h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true,"mb-4":true},h2:{"text-xl":true,"font-semibold":true,"mb-2":true},h3:{"text-lg":true,"font-medium":true,"mb-1":true},h4:{"text-base":true,"font-medium":true},h5:{"text-sm":true,"font-medium":true},h6:{"text-xs":true,"font-medium":true},body:{"text-base":true,"leading-relaxed":true,"text-foreground/90":true},caption:{"text-sm":true,"text-muted-foreground":true,"leading-relaxed":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},TextField:{container:{"a2ui-textfield":true,flex:true,"flex-col":true,"gap-1.5":true},element:{flex:true,"h-10":true,"w-full":true,"rounded-md":true,border:true,"border-input":true,"bg-background":true,"px-3":true,"py-2":true,"text-sm":true,"ring-offset-background":true,"transition-colors":true,"placeholder:text-muted-foreground":true,"focus-visible:outline-none":true,"focus-visible:ring-2":true,"focus-visible:ring-ring":true,"focus-visible:ring-offset-2":true,"disabled:cursor-not-allowed":true,"disabled:opacity-50":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},Video:{"a2ui-video":true,"w-full":true,"rounded-2xl":true,border:true,"border-border/50":true}},elements:{a:{"text-primary":true,"underline-offset-4":true,"hover:underline":true,"transition-colors":true},audio:e(),body:{"text-base":true},button:e(),h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true},h2:{"text-xl":true,"font-semibold":true},h3:{"text-lg":true,"font-bold":true},h4:{"text-base":true,"font-semibold":true},h5:{"text-base":true,"font-medium":true},iframe:e(),input:e(),p:{"text-base":true,"leading-relaxed":true},pre:{"font-mono":true,"text-sm":true,"bg-muted":true,"p-4":true,"rounded-md":true,"overflow-x-auto":true,border:true,"border-border":true},textarea:e(),video:e()},markdown:{p:["text-[15px]","leading-[1.7]","mb-3"],h1:["text-xl","font-bold","tracking-tight","mt-6","mb-4"],h2:["text-[17px]","font-semibold","mt-5","mb-3"],h3:["text-[15px]","font-semibold","mt-4","mb-2"],h4:["text-[15px]","font-medium","mt-3","mb-2"],h5:["text-sm","font-medium","mt-3","mb-2"],ul:["list-disc","list-outside","ml-5","mb-3","space-y-1.5"],ol:["list-decimal","list-outside","ml-5","mb-3","space-y-1.5"],li:["text-[15px]","leading-[1.7]","pl-1"],a:["text-primary","underline-offset-2","hover:underline","font-medium"],strong:["font-semibold"],em:["not-italic","opacity-80"],code:["font-mono","text-[13px]","bg-muted/60","px-1.5","py-0.5","rounded","border","border-border/50"],blockquote:["border-l-3","border-primary/40","pl-4","py-2","text-muted-foreground","bg-muted/30","rounded-r","mb-3","text-[14px]"]}};var o=createContext(u);function b({theme:t=u,children:r}){return jsx(o.Provider,{value:t,children:r})}function g(){return useContext(o)}var n=createContext({processor:null,surfaceId:null});function v({processor:t,surfaceId:r="@default",children:i}){return jsx(n.Provider,{value:{processor:t,surfaceId:r},children:i})}function T(){return useContext(n)}export{n as ProcessorContext,v as ProcessorProvider,o as ThemeContext,b as ThemeProvider,T as useProcessor,g as useTheme};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var K=Object.defineProperty;var W=(e,t,r)=>t in e?K(e,t,{enumerable:true,configurable:true,writable:true,value:r}):e[t]=r;var R=(e,t,r)=>W(e,typeof t!="symbol"?t+"":t,r);function G(e){return a(e)&&"key"in e}function D(e,t){return e==="path"&&typeof t=="string"}function a(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function I(e){return a(e)?"explicitList"in e||"template"in e:false}function h(e){return a(e)&&("path"in e||"literal"in e&&typeof e.literal=="string"||"literalString"in e)}function J(e){return a(e)&&("path"in e||"literal"in e&&typeof e.literal=="number"||"literalNumber"in e)}function _(e){return a(e)&&("path"in e||"literal"in e&&typeof e.literal=="boolean"||"literalBoolean"in e)}function y(e){return a(e)?"id"in e&&"type"in e&&"properties"in e:false}function M(e){return a(e)&&"url"in e&&h(e.url)}function A(e){return a(e)&&"child"in e&&y(e.child)&&"action"in e}function x(e){return a(e)?"child"in e?y(e.child):"children"in e?Array.isArray(e.children)&&e.children.every(y):false:false}function b(e){return a(e)&&"label"in e&&h(e.label)&&"value"in e&&_(e.value)}function S(e){return a(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(y)}function k(e){return a(e)&&"value"in e&&h(e.value)}function V(e){return a(e)}function T(e){return a(e)&&"url"in e&&h(e.url)}function $(e){return a(e)&&"name"in e&&h(e.name)}function P(e){return a(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(y)}function E(e){return a(e)&&"entryPointChild"in e&&y(e.entryPointChild)&&"contentChild"in e&&y(e.contentChild)}function B(e){return a(e)&&"selections"in e}function N(e){return a(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(y)}function U(e){return a(e)&&"value"in e&&J(e.value)}function z(e){return a(e)&&"title"in e&&h(e.title)&&"child"in e&&y(e.child)}function j(e){return a(e)&&"tabItems"in e&&Array.isArray(e.tabItems)&&e.tabItems.every(z)}function O(e){return a(e)&&"text"in e&&h(e.text)}function F(e){return a(e)&&"label"in e&&h(e.label)}function L(e){return a(e)&&"url"in e&&h(e.url)}var g=class g{constructor(t={}){R(this,"mapCtor",Map);R(this,"arrayCtor",Array);R(this,"setCtor",Set);R(this,"objCtor",Object);R(this,"surfaces");this.arrayCtor=t.arrayCtor??Array,this.mapCtor=t.mapCtor??Map,this.setCtor=t.setCtor??Set,this.objCtor=t.objCtor??Object,this.surfaces=new this.mapCtor;}getSurfaces(){return this.surfaces}clearSurfaces(){this.surfaces.clear();}processMessages(t){for(let r of t)r.beginRendering&&this.handleBeginRendering(r.beginRendering,r.beginRendering.surfaceId),r.surfaceUpdate&&this.handleSurfaceUpdate(r.surfaceUpdate,r.surfaceUpdate.surfaceId),r.dataModelUpdate&&this.handleDataModelUpdate(r.dataModelUpdate,r.dataModelUpdate.surfaceId),r.deleteSurface&&this.handleDeleteSurface(r.deleteSurface);}getData(t,r,n=g.DEFAULT_SURFACE_ID){let o=this.getOrCreateSurface(n);if(!o)return null;let i;return r==="."||r===""?i=t.dataContextPath??"/":i=this.resolvePath(r,t.dataContextPath),this.getDataByPath(o.dataModel,i)}setData(t,r,n,o=g.DEFAULT_SURFACE_ID){if(!t){console.warn("No component node set");return}let i=this.getOrCreateSurface(o);if(!i)return;let l;r==="."||r===""?l=t.dataContextPath??"/":l=this.resolvePath(r,t.dataContextPath),this.setDataByPath(i.dataModel,l,n);}resolvePath(t,r){return t.startsWith("/")?t:r&&r!=="/"?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:`/${t}`}parseIfJsonString(t){if(typeof t!="string")return t;let r=t.trim();if(r.startsWith("{")&&r.endsWith("}")||r.startsWith("[")&&r.endsWith("]"))try{return JSON.parse(t)}catch{return console.warn(`Failed to parse potential JSON string: "${t.substring(0,50)}..."`),t}return t}convertKeyValueArrayToMap(t){let r=new this.mapCtor;for(let n of t){if(!a(n)||!("key"in n))continue;let o=n.key,i=this.findValueKey(n);if(!i)continue;let l=n[i];i==="valueMap"&&Array.isArray(l)?l=this.convertKeyValueArrayToMap(l):typeof l=="string"&&(l=this.parseIfJsonString(l)),this.setDataByPath(r,o,l);}return r}setDataByPath(t,r,n){if(Array.isArray(n)&&(n.length===0||a(n[0])&&"key"in n[0]))if(n.length===1&&a(n[0])&&n[0].key==="."){let c=n[0],u=this.findValueKey(c);u?(n=c[u],u==="valueMap"&&Array.isArray(n)?n=this.convertKeyValueArrayToMap(n):typeof n=="string"&&(n=this.parseIfJsonString(n))):n=this.convertKeyValueArrayToMap(n);}else n=this.convertKeyValueArrayToMap(n);let o=this.normalizePath(r).split("/").filter(c=>c);if(o.length===0){if(n instanceof Map||a(n)){!(n instanceof Map)&&a(n)&&(n=new this.mapCtor(Object.entries(n))),t.clear();for(let[c,u]of n.entries())t.set(c,u);}else console.error("Cannot set root of DataModel to a non-Map value.");return}let i=t;for(let c=0;c<o.length-1;c++){let u=o[c],f;i instanceof Map?f=i.get(u):Array.isArray(i)&&/^\d+$/.test(u)&&(f=i[parseInt(u,10)]),(f===void 0||typeof f!="object"||f===null)&&(f=new this.mapCtor,i instanceof this.mapCtor?i.set(u,f):Array.isArray(i)&&(i[parseInt(u,10)]=f)),i=f;}let l=o[o.length-1];i instanceof this.mapCtor?i.set(l,n):Array.isArray(i)&&/^\d+$/.test(l)&&(i[parseInt(l,10)]=n);}normalizePath(t){return "/"+t.replace(/\[(\d+)\]/g,".$1").split(".").filter(o=>o.length>0).join("/")}getDataByPath(t,r){let n=this.normalizePath(r).split("/").filter(i=>i),o=t;for(let i of n){if(o==null)return null;if(o instanceof Map)o=o.get(i);else if(Array.isArray(o)&&/^\d+$/.test(i))o=o[parseInt(i,10)];else if(a(o))o=o[i];else return null}return o??null}getOrCreateSurface(t){let r=this.surfaces.get(t);return r||(r={rootComponentId:null,componentTree:null,dataModel:new this.mapCtor,components:new this.mapCtor,styles:{}},this.surfaces.set(t,r)),r}handleBeginRendering(t,r){let n=this.getOrCreateSurface(r);n.rootComponentId=t.root,n.styles=t.styles??{},this.rebuildComponentTree(n);}handleSurfaceUpdate(t,r){let n=this.getOrCreateSurface(r);for(let o of t.components)n.components.set(o.id,o);this.rebuildComponentTree(n);}handleDataModelUpdate(t,r){let n=this.getOrCreateSurface(r),o=t.path??"/";this.setDataByPath(n.dataModel,o,t.contents),this.rebuildComponentTree(n);}handleDeleteSurface(t){this.surfaces.delete(t.surfaceId);}rebuildComponentTree(t){if(!t.rootComponentId){t.componentTree=null;return}let r=new this.setCtor;t.componentTree=this.buildNodeRecursive(t.rootComponentId,t,r,"/","");}findValueKey(t){return Object.keys(t).find(r=>r.startsWith("value"))}buildNodeRecursive(t,r,n,o,i=""){let l=`${t}${i}`,{components:c}=r;if(!c.has(t))return null;if(n.has(l))throw new Error(`Circular dependency for component "${l}".`);n.add(l);let u=c.get(t),f=u.component??{},d=Object.keys(f)[0]??"Unknown",m=f[d],s={};if(a(m))for(let[v,w]of Object.entries(m))s[v]=this.resolvePropertyValue(w,r,n,o,i);n.delete(l);let p={id:l,dataContextPath:o,weight:u.weight??"initial"};switch(d){case "Text":if(!O(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Text",properties:s};case "Image":if(!T(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Image",properties:s};case "Icon":if(!$(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Icon",properties:s};case "Video":if(!L(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Video",properties:s};case "AudioPlayer":if(!M(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"AudioPlayer",properties:s};case "Row":if(!N(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Row",properties:s};case "Column":if(!S(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Column",properties:s};case "List":if(!P(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"List",properties:s};case "Card":if(!x(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Card",properties:s};case "Tabs":if(!j(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Tabs",properties:s};case "Divider":if(!V(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Divider",properties:s};case "Modal":if(!E(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Modal",properties:s};case "Button":if(!A(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Button",properties:s};case "CheckBox":if(!b(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"CheckBox",properties:s};case "TextField":if(!F(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"TextField",properties:s};case "DateTimeInput":if(!k(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"DateTimeInput",properties:s};case "MultipleChoice":if(!B(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"MultipleChoice",properties:s};case "Slider":if(!U(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Slider",properties:s};default:return {...p,type:d,properties:s}}}resolvePropertyValue(t,r,n,o,i=""){if(typeof t=="string"&&r.components.has(t))return this.buildNodeRecursive(t,r,n,o,i);if(I(t)){if(t.explicitList)return t.explicitList.map(l=>this.buildNodeRecursive(l,r,n,o,i));if(t.template){let l=this.resolvePath(t.template.dataBinding,o),c=this.getDataByPath(r.dataModel,l),u=t.template;return Array.isArray(c)?c.map((f,d)=>{let p=`:${[...o.split("/").filter(w=>/^\d+$/.test(w)),d].join(":")}`,v=`${l}/${d}`;return this.buildNodeRecursive(u.componentId,r,n,v,p)}):c instanceof Map?Array.from(c.keys(),f=>{let d=`:${f}`,m=`${l}/${f}`;return this.buildNodeRecursive(u.componentId,r,n,m,d)}):[]}}if(Array.isArray(t))return t.map(l=>this.resolvePropertyValue(l,r,n,o,i));if(a(t)){let l={};for(let[c,u]of Object.entries(t)){let f=u;if(D(c,u)&&o!=="/"){f=u.replace(/^\.?\/item/,"").replace(/^\.?\/text/,"").replace(/^\.?\/label/,"").replace(/^\.?\//,""),l[c]=f;continue}l[c]=this.resolvePropertyValue(f,r,n,o,i);}return l}return t}};R(g,"DEFAULT_SURFACE_ID","@default");var C=g;function X(){return new C}
|
|
2
|
+
exports.A2uiMessageProcessor=C;exports.createMessageProcessor=X;exports.isAnyComponentNode=y;exports.isBooleanValue=_;exports.isComponentArrayReference=I;exports.isNumberValue=J;exports.isObject=a;exports.isPath=D;exports.isResolvedAudioPlayer=M;exports.isResolvedButton=A;exports.isResolvedCard=x;exports.isResolvedCheckbox=b;exports.isResolvedColumn=S;exports.isResolvedDateTimeInput=k;exports.isResolvedDivider=V;exports.isResolvedIcon=$;exports.isResolvedImage=T;exports.isResolvedList=P;exports.isResolvedModal=E;exports.isResolvedMultipleChoice=B;exports.isResolvedRow=N;exports.isResolvedSlider=U;exports.isResolvedTabItem=z;exports.isResolvedTabs=j;exports.isResolvedText=O;exports.isResolvedTextField=F;exports.isResolvedVideo=L;exports.isStringValue=h;exports.isValueMap=G;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var K=Object.defineProperty;var W=(e,t,r)=>t in e?K(e,t,{enumerable:true,configurable:true,writable:true,value:r}):e[t]=r;var R=(e,t,r)=>W(e,typeof t!="symbol"?t+"":t,r);function G(e){return a(e)&&"key"in e}function D(e,t){return e==="path"&&typeof t=="string"}function a(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function I(e){return a(e)?"explicitList"in e||"template"in e:false}function h(e){return a(e)&&("path"in e||"literal"in e&&typeof e.literal=="string"||"literalString"in e)}function J(e){return a(e)&&("path"in e||"literal"in e&&typeof e.literal=="number"||"literalNumber"in e)}function _(e){return a(e)&&("path"in e||"literal"in e&&typeof e.literal=="boolean"||"literalBoolean"in e)}function y(e){return a(e)?"id"in e&&"type"in e&&"properties"in e:false}function M(e){return a(e)&&"url"in e&&h(e.url)}function A(e){return a(e)&&"child"in e&&y(e.child)&&"action"in e}function x(e){return a(e)?"child"in e?y(e.child):"children"in e?Array.isArray(e.children)&&e.children.every(y):false:false}function b(e){return a(e)&&"label"in e&&h(e.label)&&"value"in e&&_(e.value)}function S(e){return a(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(y)}function k(e){return a(e)&&"value"in e&&h(e.value)}function V(e){return a(e)}function T(e){return a(e)&&"url"in e&&h(e.url)}function $(e){return a(e)&&"name"in e&&h(e.name)}function P(e){return a(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(y)}function E(e){return a(e)&&"entryPointChild"in e&&y(e.entryPointChild)&&"contentChild"in e&&y(e.contentChild)}function B(e){return a(e)&&"selections"in e}function N(e){return a(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(y)}function U(e){return a(e)&&"value"in e&&J(e.value)}function z(e){return a(e)&&"title"in e&&h(e.title)&&"child"in e&&y(e.child)}function j(e){return a(e)&&"tabItems"in e&&Array.isArray(e.tabItems)&&e.tabItems.every(z)}function O(e){return a(e)&&"text"in e&&h(e.text)}function F(e){return a(e)&&"label"in e&&h(e.label)}function L(e){return a(e)&&"url"in e&&h(e.url)}var g=class g{constructor(t={}){R(this,"mapCtor",Map);R(this,"arrayCtor",Array);R(this,"setCtor",Set);R(this,"objCtor",Object);R(this,"surfaces");this.arrayCtor=t.arrayCtor??Array,this.mapCtor=t.mapCtor??Map,this.setCtor=t.setCtor??Set,this.objCtor=t.objCtor??Object,this.surfaces=new this.mapCtor;}getSurfaces(){return this.surfaces}clearSurfaces(){this.surfaces.clear();}processMessages(t){for(let r of t)r.beginRendering&&this.handleBeginRendering(r.beginRendering,r.beginRendering.surfaceId),r.surfaceUpdate&&this.handleSurfaceUpdate(r.surfaceUpdate,r.surfaceUpdate.surfaceId),r.dataModelUpdate&&this.handleDataModelUpdate(r.dataModelUpdate,r.dataModelUpdate.surfaceId),r.deleteSurface&&this.handleDeleteSurface(r.deleteSurface);}getData(t,r,n=g.DEFAULT_SURFACE_ID){let o=this.getOrCreateSurface(n);if(!o)return null;let i;return r==="."||r===""?i=t.dataContextPath??"/":i=this.resolvePath(r,t.dataContextPath),this.getDataByPath(o.dataModel,i)}setData(t,r,n,o=g.DEFAULT_SURFACE_ID){if(!t){console.warn("No component node set");return}let i=this.getOrCreateSurface(o);if(!i)return;let l;r==="."||r===""?l=t.dataContextPath??"/":l=this.resolvePath(r,t.dataContextPath),this.setDataByPath(i.dataModel,l,n);}resolvePath(t,r){return t.startsWith("/")?t:r&&r!=="/"?r.endsWith("/")?`${r}${t}`:`${r}/${t}`:`/${t}`}parseIfJsonString(t){if(typeof t!="string")return t;let r=t.trim();if(r.startsWith("{")&&r.endsWith("}")||r.startsWith("[")&&r.endsWith("]"))try{return JSON.parse(t)}catch{return console.warn(`Failed to parse potential JSON string: "${t.substring(0,50)}..."`),t}return t}convertKeyValueArrayToMap(t){let r=new this.mapCtor;for(let n of t){if(!a(n)||!("key"in n))continue;let o=n.key,i=this.findValueKey(n);if(!i)continue;let l=n[i];i==="valueMap"&&Array.isArray(l)?l=this.convertKeyValueArrayToMap(l):typeof l=="string"&&(l=this.parseIfJsonString(l)),this.setDataByPath(r,o,l);}return r}setDataByPath(t,r,n){if(Array.isArray(n)&&(n.length===0||a(n[0])&&"key"in n[0]))if(n.length===1&&a(n[0])&&n[0].key==="."){let c=n[0],u=this.findValueKey(c);u?(n=c[u],u==="valueMap"&&Array.isArray(n)?n=this.convertKeyValueArrayToMap(n):typeof n=="string"&&(n=this.parseIfJsonString(n))):n=this.convertKeyValueArrayToMap(n);}else n=this.convertKeyValueArrayToMap(n);let o=this.normalizePath(r).split("/").filter(c=>c);if(o.length===0){if(n instanceof Map||a(n)){!(n instanceof Map)&&a(n)&&(n=new this.mapCtor(Object.entries(n))),t.clear();for(let[c,u]of n.entries())t.set(c,u);}else console.error("Cannot set root of DataModel to a non-Map value.");return}let i=t;for(let c=0;c<o.length-1;c++){let u=o[c],f;i instanceof Map?f=i.get(u):Array.isArray(i)&&/^\d+$/.test(u)&&(f=i[parseInt(u,10)]),(f===void 0||typeof f!="object"||f===null)&&(f=new this.mapCtor,i instanceof this.mapCtor?i.set(u,f):Array.isArray(i)&&(i[parseInt(u,10)]=f)),i=f;}let l=o[o.length-1];i instanceof this.mapCtor?i.set(l,n):Array.isArray(i)&&/^\d+$/.test(l)&&(i[parseInt(l,10)]=n);}normalizePath(t){return "/"+t.replace(/\[(\d+)\]/g,".$1").split(".").filter(o=>o.length>0).join("/")}getDataByPath(t,r){let n=this.normalizePath(r).split("/").filter(i=>i),o=t;for(let i of n){if(o==null)return null;if(o instanceof Map)o=o.get(i);else if(Array.isArray(o)&&/^\d+$/.test(i))o=o[parseInt(i,10)];else if(a(o))o=o[i];else return null}return o??null}getOrCreateSurface(t){let r=this.surfaces.get(t);return r||(r={rootComponentId:null,componentTree:null,dataModel:new this.mapCtor,components:new this.mapCtor,styles:{}},this.surfaces.set(t,r)),r}handleBeginRendering(t,r){let n=this.getOrCreateSurface(r);n.rootComponentId=t.root,n.styles=t.styles??{},this.rebuildComponentTree(n);}handleSurfaceUpdate(t,r){let n=this.getOrCreateSurface(r);for(let o of t.components)n.components.set(o.id,o);this.rebuildComponentTree(n);}handleDataModelUpdate(t,r){let n=this.getOrCreateSurface(r),o=t.path??"/";this.setDataByPath(n.dataModel,o,t.contents),this.rebuildComponentTree(n);}handleDeleteSurface(t){this.surfaces.delete(t.surfaceId);}rebuildComponentTree(t){if(!t.rootComponentId){t.componentTree=null;return}let r=new this.setCtor;t.componentTree=this.buildNodeRecursive(t.rootComponentId,t,r,"/","");}findValueKey(t){return Object.keys(t).find(r=>r.startsWith("value"))}buildNodeRecursive(t,r,n,o,i=""){let l=`${t}${i}`,{components:c}=r;if(!c.has(t))return null;if(n.has(l))throw new Error(`Circular dependency for component "${l}".`);n.add(l);let u=c.get(t),f=u.component??{},d=Object.keys(f)[0]??"Unknown",m=f[d],s={};if(a(m))for(let[v,w]of Object.entries(m))s[v]=this.resolvePropertyValue(w,r,n,o,i);n.delete(l);let p={id:l,dataContextPath:o,weight:u.weight??"initial"};switch(d){case "Text":if(!O(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Text",properties:s};case "Image":if(!T(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Image",properties:s};case "Icon":if(!$(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Icon",properties:s};case "Video":if(!L(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Video",properties:s};case "AudioPlayer":if(!M(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"AudioPlayer",properties:s};case "Row":if(!N(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Row",properties:s};case "Column":if(!S(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Column",properties:s};case "List":if(!P(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"List",properties:s};case "Card":if(!x(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Card",properties:s};case "Tabs":if(!j(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Tabs",properties:s};case "Divider":if(!V(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Divider",properties:s};case "Modal":if(!E(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Modal",properties:s};case "Button":if(!A(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Button",properties:s};case "CheckBox":if(!b(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"CheckBox",properties:s};case "TextField":if(!F(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"TextField",properties:s};case "DateTimeInput":if(!k(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"DateTimeInput",properties:s};case "MultipleChoice":if(!B(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"MultipleChoice",properties:s};case "Slider":if(!U(s))throw new Error(`Invalid data; expected ${d}`);return {...p,type:"Slider",properties:s};default:return {...p,type:d,properties:s}}}resolvePropertyValue(t,r,n,o,i=""){if(typeof t=="string"&&r.components.has(t))return this.buildNodeRecursive(t,r,n,o,i);if(I(t)){if(t.explicitList)return t.explicitList.map(l=>this.buildNodeRecursive(l,r,n,o,i));if(t.template){let l=this.resolvePath(t.template.dataBinding,o),c=this.getDataByPath(r.dataModel,l),u=t.template;return Array.isArray(c)?c.map((f,d)=>{let p=`:${[...o.split("/").filter(w=>/^\d+$/.test(w)),d].join(":")}`,v=`${l}/${d}`;return this.buildNodeRecursive(u.componentId,r,n,v,p)}):c instanceof Map?Array.from(c.keys(),f=>{let d=`:${f}`,m=`${l}/${f}`;return this.buildNodeRecursive(u.componentId,r,n,m,d)}):[]}}if(Array.isArray(t))return t.map(l=>this.resolvePropertyValue(l,r,n,o,i));if(a(t)){let l={};for(let[c,u]of Object.entries(t)){let f=u;if(D(c,u)&&o!=="/"){f=u.replace(/^\.?\/item/,"").replace(/^\.?\/text/,"").replace(/^\.?\/label/,"").replace(/^\.?\//,""),l[c]=f;continue}l[c]=this.resolvePropertyValue(f,r,n,o,i);}return l}return t}};R(g,"DEFAULT_SURFACE_ID","@default");var C=g;function X(){return new C}
|
|
2
|
+
export{C as A2uiMessageProcessor,X as createMessageProcessor,y as isAnyComponentNode,_ as isBooleanValue,I as isComponentArrayReference,J as isNumberValue,a as isObject,D as isPath,M as isResolvedAudioPlayer,A as isResolvedButton,x as isResolvedCard,b as isResolvedCheckbox,S as isResolvedColumn,k as isResolvedDateTimeInput,V as isResolvedDivider,$ as isResolvedIcon,T as isResolvedImage,P as isResolvedList,E as isResolvedModal,B as isResolvedMultipleChoice,N as isResolvedRow,U as isResolvedSlider,z as isResolvedTabItem,j as isResolvedTabs,O as isResolvedText,F as isResolvedTextField,L as isResolvedVideo,h as isStringValue,G as isValueMap};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var e="a2uiaction";exports.A2UI_EVENT_NAME=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e="a2uiaction";export{e as A2UI_EVENT_NAME};
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var nt=require('react-markdown'),react=require('react'),jsxRuntime=require('react/jsx-runtime'),Ze=require('lucide-react');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var nt__default=/*#__PURE__*/_interopDefault(nt);var Ze__namespace=/*#__PURE__*/_interopNamespace(Ze);var Be=Object.defineProperty;var it=(e,t,o)=>t in e?Be(e,t,{enumerable:true,configurable:true,writable:true,value:o}):e[t]=o;var ee=(e,t)=>{for(var o in t)Be(e,o,{get:t[o],enumerable:true});};var T=(e,t,o)=>it(e,typeof t!="symbol"?t+"":t,o);var Le={};ee(Le,{A2uiMessageProcessor:()=>R,createMessageProcessor:()=>$e,isAnyComponentNode:()=>N,isBooleanValue:()=>Ne,isComponentArrayReference:()=>re,isNumberValue:()=>ve,isObject:()=>f,isPath:()=>te,isResolvedAudioPlayer:()=>oe,isResolvedButton:()=>ne,isResolvedCard:()=>se,isResolvedCheckbox:()=>ie,isResolvedColumn:()=>ae,isResolvedDateTimeInput:()=>le,isResolvedDivider:()=>ce,isResolvedIcon:()=>ue,isResolvedImage:()=>de,isResolvedList:()=>pe,isResolvedModal:()=>me,isResolvedMultipleChoice:()=>fe,isResolvedRow:()=>he,isResolvedSlider:()=>ye,isResolvedTabItem:()=>Ie,isResolvedTabs:()=>ge,isResolvedText:()=>xe,isResolvedTextField:()=>be,isResolvedVideo:()=>Re,isStringValue:()=>I,isValueMap:()=>Fe});function Fe(e){return f(e)&&"key"in e}function te(e,t){return e==="path"&&typeof t=="string"}function f(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function re(e){return f(e)?"explicitList"in e||"template"in e:false}function I(e){return f(e)&&("path"in e||"literal"in e&&typeof e.literal=="string"||"literalString"in e)}function ve(e){return f(e)&&("path"in e||"literal"in e&&typeof e.literal=="number"||"literalNumber"in e)}function Ne(e){return f(e)&&("path"in e||"literal"in e&&typeof e.literal=="boolean"||"literalBoolean"in e)}function N(e){return f(e)?"id"in e&&"type"in e&&"properties"in e:false}function oe(e){return f(e)&&"url"in e&&I(e.url)}function ne(e){return f(e)&&"child"in e&&N(e.child)&&"action"in e}function se(e){return f(e)?"child"in e?N(e.child):"children"in e?Array.isArray(e.children)&&e.children.every(N):false:false}function ie(e){return f(e)&&"label"in e&&I(e.label)&&"value"in e&&Ne(e.value)}function ae(e){return f(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(N)}function le(e){return f(e)&&"value"in e&&I(e.value)}function ce(e){return f(e)}function de(e){return f(e)&&"url"in e&&I(e.url)}function ue(e){return f(e)&&"name"in e&&I(e.name)}function pe(e){return f(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(N)}function me(e){return f(e)&&"entryPointChild"in e&&N(e.entryPointChild)&&"contentChild"in e&&N(e.contentChild)}function fe(e){return f(e)&&"selections"in e}function he(e){return f(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(N)}function ye(e){return f(e)&&"value"in e&&ve(e.value)}function Ie(e){return f(e)&&"title"in e&&I(e.title)&&"child"in e&&N(e.child)}function ge(e){return f(e)&&"tabItems"in e&&Array.isArray(e.tabItems)&&e.tabItems.every(Ie)}function xe(e){return f(e)&&"text"in e&&I(e.text)}function be(e){return f(e)&&"label"in e&&I(e.label)}function Re(e){return f(e)&&"url"in e&&I(e.url)}var U=class U{constructor(t={}){T(this,"mapCtor",Map);T(this,"arrayCtor",Array);T(this,"setCtor",Set);T(this,"objCtor",Object);T(this,"surfaces");this.arrayCtor=t.arrayCtor??Array,this.mapCtor=t.mapCtor??Map,this.setCtor=t.setCtor??Set,this.objCtor=t.objCtor??Object,this.surfaces=new this.mapCtor;}getSurfaces(){return this.surfaces}clearSurfaces(){this.surfaces.clear();}processMessages(t){for(let o of t)o.beginRendering&&this.handleBeginRendering(o.beginRendering,o.beginRendering.surfaceId),o.surfaceUpdate&&this.handleSurfaceUpdate(o.surfaceUpdate,o.surfaceUpdate.surfaceId),o.dataModelUpdate&&this.handleDataModelUpdate(o.dataModelUpdate,o.dataModelUpdate.surfaceId),o.deleteSurface&&this.handleDeleteSurface(o.deleteSurface);}getData(t,o,n=U.DEFAULT_SURFACE_ID){let s=this.getOrCreateSurface(n);if(!s)return null;let r;return o==="."||o===""?r=t.dataContextPath??"/":r=this.resolvePath(o,t.dataContextPath),this.getDataByPath(s.dataModel,r)}setData(t,o,n,s=U.DEFAULT_SURFACE_ID){if(!t){console.warn("No component node set");return}let r=this.getOrCreateSurface(s);if(!r)return;let i;o==="."||o===""?i=t.dataContextPath??"/":i=this.resolvePath(o,t.dataContextPath),this.setDataByPath(r.dataModel,i,n);}resolvePath(t,o){return t.startsWith("/")?t:o&&o!=="/"?o.endsWith("/")?`${o}${t}`:`${o}/${t}`:`/${t}`}parseIfJsonString(t){if(typeof t!="string")return t;let o=t.trim();if(o.startsWith("{")&&o.endsWith("}")||o.startsWith("[")&&o.endsWith("]"))try{return JSON.parse(t)}catch{return console.warn(`Failed to parse potential JSON string: "${t.substring(0,50)}..."`),t}return t}convertKeyValueArrayToMap(t){let o=new this.mapCtor;for(let n of t){if(!f(n)||!("key"in n))continue;let s=n.key,r=this.findValueKey(n);if(!r)continue;let i=n[r];r==="valueMap"&&Array.isArray(i)?i=this.convertKeyValueArrayToMap(i):typeof i=="string"&&(i=this.parseIfJsonString(i)),this.setDataByPath(o,s,i);}return o}setDataByPath(t,o,n){if(Array.isArray(n)&&(n.length===0||f(n[0])&&"key"in n[0]))if(n.length===1&&f(n[0])&&n[0].key==="."){let a=n[0],c=this.findValueKey(a);c?(n=a[c],c==="valueMap"&&Array.isArray(n)?n=this.convertKeyValueArrayToMap(n):typeof n=="string"&&(n=this.parseIfJsonString(n))):n=this.convertKeyValueArrayToMap(n);}else n=this.convertKeyValueArrayToMap(n);let s=this.normalizePath(o).split("/").filter(a=>a);if(s.length===0){if(n instanceof Map||f(n)){!(n instanceof Map)&&f(n)&&(n=new this.mapCtor(Object.entries(n))),t.clear();for(let[a,c]of n.entries())t.set(a,c);}else console.error("Cannot set root of DataModel to a non-Map value.");return}let r=t;for(let a=0;a<s.length-1;a++){let c=s[a],u;r instanceof Map?u=r.get(c):Array.isArray(r)&&/^\d+$/.test(c)&&(u=r[parseInt(c,10)]),(u===void 0||typeof u!="object"||u===null)&&(u=new this.mapCtor,r instanceof this.mapCtor?r.set(c,u):Array.isArray(r)&&(r[parseInt(c,10)]=u)),r=u;}let i=s[s.length-1];r instanceof this.mapCtor?r.set(i,n):Array.isArray(r)&&/^\d+$/.test(i)&&(r[parseInt(i,10)]=n);}normalizePath(t){return "/"+t.replace(/\[(\d+)\]/g,".$1").split(".").filter(s=>s.length>0).join("/")}getDataByPath(t,o){let n=this.normalizePath(o).split("/").filter(r=>r),s=t;for(let r of n){if(s==null)return null;if(s instanceof Map)s=s.get(r);else if(Array.isArray(s)&&/^\d+$/.test(r))s=s[parseInt(r,10)];else if(f(s))s=s[r];else return null}return s??null}getOrCreateSurface(t){let o=this.surfaces.get(t);return o||(o={rootComponentId:null,componentTree:null,dataModel:new this.mapCtor,components:new this.mapCtor,styles:{}},this.surfaces.set(t,o)),o}handleBeginRendering(t,o){let n=this.getOrCreateSurface(o);n.rootComponentId=t.root,n.styles=t.styles??{},this.rebuildComponentTree(n);}handleSurfaceUpdate(t,o){let n=this.getOrCreateSurface(o);for(let s of t.components)n.components.set(s.id,s);this.rebuildComponentTree(n);}handleDataModelUpdate(t,o){let n=this.getOrCreateSurface(o),s=t.path??"/";this.setDataByPath(n.dataModel,s,t.contents),this.rebuildComponentTree(n);}handleDeleteSurface(t){this.surfaces.delete(t.surfaceId);}rebuildComponentTree(t){if(!t.rootComponentId){t.componentTree=null;return}let o=new this.setCtor;t.componentTree=this.buildNodeRecursive(t.rootComponentId,t,o,"/","");}findValueKey(t){return Object.keys(t).find(o=>o.startsWith("value"))}buildNodeRecursive(t,o,n,s,r=""){let i=`${t}${r}`,{components:a}=o;if(!a.has(t))return null;if(n.has(i))throw new Error(`Circular dependency for component "${i}".`);n.add(i);let c=a.get(t),u=c.component??{},l=Object.keys(u)[0]??"Unknown",b=u[l],p={};if(f(b))for(let[D,S]of Object.entries(b))p[D]=this.resolvePropertyValue(S,o,n,s,r);n.delete(i);let y={id:i,dataContextPath:s,weight:c.weight??"initial"};switch(l){case "Text":if(!xe(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Text",properties:p};case "Image":if(!de(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Image",properties:p};case "Icon":if(!ue(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Icon",properties:p};case "Video":if(!Re(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Video",properties:p};case "AudioPlayer":if(!oe(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"AudioPlayer",properties:p};case "Row":if(!he(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Row",properties:p};case "Column":if(!ae(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Column",properties:p};case "List":if(!pe(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"List",properties:p};case "Card":if(!se(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Card",properties:p};case "Tabs":if(!ge(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Tabs",properties:p};case "Divider":if(!ce(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Divider",properties:p};case "Modal":if(!me(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Modal",properties:p};case "Button":if(!ne(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Button",properties:p};case "CheckBox":if(!ie(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"CheckBox",properties:p};case "TextField":if(!be(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"TextField",properties:p};case "DateTimeInput":if(!le(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"DateTimeInput",properties:p};case "MultipleChoice":if(!fe(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"MultipleChoice",properties:p};case "Slider":if(!ye(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Slider",properties:p};default:return {...y,type:l,properties:p}}}resolvePropertyValue(t,o,n,s,r=""){if(typeof t=="string"&&o.components.has(t))return this.buildNodeRecursive(t,o,n,s,r);if(re(t)){if(t.explicitList)return t.explicitList.map(i=>this.buildNodeRecursive(i,o,n,s,r));if(t.template){let i=this.resolvePath(t.template.dataBinding,s),a=this.getDataByPath(o.dataModel,i),c=t.template;return Array.isArray(a)?a.map((u,l)=>{let y=`:${[...s.split("/").filter(S=>/^\d+$/.test(S)),l].join(":")}`,D=`${i}/${l}`;return this.buildNodeRecursive(c.componentId,o,n,D,y)}):a instanceof Map?Array.from(a.keys(),u=>{let l=`:${u}`,b=`${i}/${u}`;return this.buildNodeRecursive(c.componentId,o,n,b,l)}):[]}}if(Array.isArray(t))return t.map(i=>this.resolvePropertyValue(i,o,n,s,r));if(f(t)){let i={};for(let[a,c]of Object.entries(t)){let u=c;if(te(a,c)&&s!=="/"){u=c.replace(/^\.?\/item/,"").replace(/^\.?\/text/,"").replace(/^\.?\/label/,"").replace(/^\.?\//,""),i[a]=u;continue}i[a]=this.resolvePropertyValue(u,o,n,s,r);}return i}return t}};T(U,"DEFAULT_SURFACE_ID","@default");var R=U;function $e(){return new R}var _e={};ee(_e,{A2UI_EVENT_NAME:()=>Oe});var Oe="a2uiaction";var at={};var Ye={};ee(Ye,{appendToAll:()=>ze,classesToString:()=>Ke,createTheme:()=>Je,defaultTheme:()=>k,merge:()=>A,stylesToCSS:()=>He});function A(...e){let t={};for(let o of e)if(o)for(let[n,s]of Object.entries(o)){let r=n.split("-").slice(0,-1).join("-")+"-",i=Object.keys(t).filter(a=>a.startsWith(r));for(let a of i)delete t[a];t[n]=s;}return t}function ze(e,t,...o){let n=structuredClone(e);for(let s of o)for(let r of Object.keys(s)){let i=r.split("-").slice(0,-1).join("-")+"-";for(let[a,c]of Object.entries(n)){if(t.includes(a))continue;let u=false;for(let l=0;l<c.length;l++)c[l]?.startsWith(i)&&(u=true,c[l]=r);u||c.push(r);}}return n}function Ke(e){return Object.entries(e).filter(([,t])=>t).map(([t])=>t).join(" ")}function He(e){let t={};for(let[o,n]of Object.entries(e)){let s=o.replace(/-([a-z])/g,(r,i)=>i.toUpperCase());t[s]=n;}return t}function w(){return {}}var k={components:{AudioPlayer:w(),Button:{"a2ui-btn":true,"inline-flex":true,"items-center":true,"justify-center":true,"whitespace-nowrap":true,"rounded-xl":true,"text-xs":true,"font-medium":true,"transition-all":true,"duration-300":true,"disabled:pointer-events-none":true,"disabled:opacity-50":true,"active:scale-95":true,"bg-primary":true,"text-primary-foreground":true,"hover:bg-primary/90":true,"shadow-sm":true,"h-9":true,"px-4":true,"py-2":true},Card:{"a2ui-card":true,group:true,relative:true,"rounded-2xl":true,border:true,"border-border/50":true,"bg-card":true,"text-card-foreground":true,"shadow-sm":true,"transition-all":true,"duration-300":true,"hover:shadow-md":true,"hover:border-primary/40":true,"hover:-translate-y-1":true,"p-5":true,"overflow-hidden":true},Column:{"a2ui-column":true,flex:true,"flex-col":true,"space-y-4":true},CheckBox:{container:{"a2ui-checkbox":true,flex:true,"items-center":true,"gap-2":true},element:{"w-4":true,"h-4":true},label:{"text-sm":true,"font-medium":true}},DateTimeInput:{container:{"a2ui-datetime":true,flex:true,"flex-col":true,"gap-1":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"transition-colors":true},label:{"text-sm":true,"font-medium":true}},Divider:{"a2ui-divider":true,"border-t":true,"border-border/50":true,"my-8":true},Image:{all:{"a2ui-image":true,"max-w-full":true,"h-auto":true},icon:{"w-6":true,"h-6":true},avatar:{"w-10":true,"h-10":true,"rounded-full":true},smallFeature:{"w-24":true,"h-24":true},mediumFeature:{"w-48":true,"h-48":true},largeFeature:{"w-full":true,"max-h-96":true},header:{"w-full":true,"h-32":true,"object-cover":true}},Icon:{"a2ui-icon":true,"w-5":true,"h-5":true},List:{"a2ui-list":true,grid:true,"grid-cols-1":true,"md:grid-cols-2":true,"gap-4":true,"w-full":true},Modal:{backdrop:{fixed:true,"inset-0":true,"bg-black/50":true,flex:true,"items-center":true,"justify-center":true,"z-50":true},element:{"bg-card":true,"rounded-lg":true,"p-6":true,"max-w-lg":true,"w-full":true,"mx-4":true,"shadow-xl":true,border:true,"border-border":true,"border-white/60":true}},MultipleChoice:{container:{"a2ui-multichoice":true,flex:true,"flex-col":true,"gap-2":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"w-full":true},label:{"text-sm":true,"font-medium":true}},Row:{"a2ui-row":true,flex:true,"flex-row":true,"items-center":true,"justify-between":true,"gap-6":true,"w-full":true},Slider:{container:{"a2ui-slider":true,flex:true,"flex-col":true,"gap-1":true},element:{"w-full":true},label:{"text-sm":true,"font-medium":true}},Tabs:{container:{"a2ui-tabs":true,flex:true,"flex-col":true,"space-y-4":true},element:{flex:true,"border-b":true,"border-border":true},controls:{all:{"px-4":true,"py-2":true,"text-sm":true,"font-medium":true,"cursor-pointer":true,"transition-colors":true,"rounded-t-md":true},selected:{"border-b-2":true,"border-primary":true,"text-primary":true,"-mb-px":true}}},Text:{all:{"a2ui-text":true},h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true,"mb-4":true},h2:{"text-xl":true,"font-semibold":true,"mb-2":true},h3:{"text-lg":true,"font-medium":true,"mb-1":true},h4:{"text-base":true,"font-medium":true},h5:{"text-sm":true,"font-medium":true},h6:{"text-xs":true,"font-medium":true},body:{"text-base":true,"leading-relaxed":true,"text-foreground/90":true},caption:{"text-sm":true,"text-muted-foreground":true,"leading-relaxed":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},TextField:{container:{"a2ui-textfield":true,flex:true,"flex-col":true,"gap-1.5":true},element:{flex:true,"h-10":true,"w-full":true,"rounded-md":true,border:true,"border-input":true,"bg-background":true,"px-3":true,"py-2":true,"text-sm":true,"ring-offset-background":true,"transition-colors":true,"placeholder:text-muted-foreground":true,"focus-visible:outline-none":true,"focus-visible:ring-2":true,"focus-visible:ring-ring":true,"focus-visible:ring-offset-2":true,"disabled:cursor-not-allowed":true,"disabled:opacity-50":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},Video:{"a2ui-video":true,"w-full":true,"rounded-2xl":true,border:true,"border-border/50":true}},elements:{a:{"text-primary":true,"underline-offset-4":true,"hover:underline":true,"transition-colors":true},audio:w(),body:{"text-base":true},button:w(),h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true},h2:{"text-xl":true,"font-semibold":true},h3:{"text-lg":true,"font-bold":true},h4:{"text-base":true,"font-semibold":true},h5:{"text-base":true,"font-medium":true},iframe:w(),input:w(),p:{"text-base":true,"leading-relaxed":true},pre:{"font-mono":true,"text-sm":true,"bg-muted":true,"p-4":true,"rounded-md":true,"overflow-x-auto":true,border:true,"border-border":true},textarea:w(),video:w()},markdown:{p:["text-[15px]","leading-[1.7]","mb-3"],h1:["text-xl","font-bold","tracking-tight","mt-6","mb-4"],h2:["text-[17px]","font-semibold","mt-5","mb-3"],h3:["text-[15px]","font-semibold","mt-4","mb-2"],h4:["text-[15px]","font-medium","mt-3","mb-2"],h5:["text-sm","font-medium","mt-3","mb-2"],ul:["list-disc","list-outside","ml-5","mb-3","space-y-1.5"],ol:["list-decimal","list-outside","ml-5","mb-3","space-y-1.5"],li:["text-[15px]","leading-[1.7]","pl-1"],a:["text-primary","underline-offset-2","hover:underline","font-medium"],strong:["font-semibold"],em:["not-italic","opacity-80"],code:["font-mono","text-[13px]","bg-muted/60","px-1.5","py-0.5","rounded","border","border-border/50"],blockquote:["border-l-3","border-primary/40","pl-4","py-2","text-muted-foreground","bg-muted/30","rounded-r","mb-3","text-[14px]"]}};function We(e,t){let o={...e};for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let s=o[n],r=t[n];typeof s=="object"&&s!==null&&typeof r=="object"&&r!==null&&!Array.isArray(s)&&!Array.isArray(r)?o[n]=We(s,r):o[n]=r;}return o}function Je(e){return We(k,e)}var st={};ee(st,{Audio:()=>L,Button:()=>O,Card:()=>H,Checkbox:()=>q,Column:()=>z,ComponentRegistry:()=>P,ComponentRenderer:()=>v,DateTimeInput:()=>G,Divider:()=>J,Icon:()=>F,Image:()=>B,List:()=>K,Markdown:()=>Ee,Modal:()=>Y,MultipleChoice:()=>Q,Root:()=>E,Row:()=>_,Slider:()=>X,Surface:()=>Ve,Tabs:()=>W,Text:()=>j,TextField:()=>Z,Video:()=>$,cn:()=>d,componentRegistry:()=>V,extractNumberValue:()=>M,extractStringValue:()=>g,renderMarkdown:()=>Ue});var Te=react.createContext(k);function dt({theme:e=k,children:t}){return jsxRuntime.jsx(Te.Provider,{value:e,children:t})}function m(){return react.useContext(Te)}function g(e,t,o,n){if(e!==null&&typeof e=="object"){if("literalString"in e)return e.literalString??"";if("literal"in e&&e.literal!==void 0)return e.literal??"";if(e&&"path"in e&&e.path){if(!o||!t)return "(no model)";let s=o.getData(t,e.path,n??R.DEFAULT_SURFACE_ID);return s===null||typeof s!="string"?"":s}}return ""}function M(e,t,o,n){if(e!==null&&typeof e=="object"){if("literalNumber"in e)return e.literalNumber??0;if("literal"in e&&e.literal!==void 0)return e.literal??0;if(e&&"path"in e&&e.path){if(!o||!t)return -1;let s=o.getData(t,e.path,n??R.DEFAULT_SURFACE_ID);return typeof s=="string"&&(s=Number.parseInt(s,10),Number.isNaN(s)&&(s=null)),s===null||typeof s!="number"?-1:s}}return 0}function d(...e){let t=[];for(let o of e)if(o){if(typeof o=="string")t.push(o);else if(typeof o=="object")for(let[n,s]of Object.entries(o))s&&t.push(n);}return t.join(" ")}function j({component:e,processor:t,surfaceId:o,text:n,usageHint:s="body",markdown:r=true}){let i=m(),a=g(n,e,t,o);if(!a)return jsxRuntime.jsx("span",{className:"text-gray-400",children:"(empty)"});let c=A(i.components.Text.all,s?i.components.Text[s]:{});if(r){let u=()=>{switch(s){case "h1":return `# ${a}`;case "h2":return `## ${a}`;case "h3":return `### ${a}`;case "h4":return `#### ${a}`;case "h5":return `##### ${a}`;case "caption":return `*${a}*`;default:return a}};return jsxRuntime.jsx("section",{className:d(c),children:jsxRuntime.jsx(nt__default.default,{components:{p:({children:l})=>jsxRuntime.jsx("p",{className:i.markdown.p.join(" "),children:l}),h1:({children:l})=>jsxRuntime.jsx("h1",{className:i.markdown.h1.join(" "),children:l}),h2:({children:l})=>jsxRuntime.jsx("h2",{className:i.markdown.h2.join(" "),children:l}),h3:({children:l})=>jsxRuntime.jsx("h3",{className:i.markdown.h3.join(" "),children:l}),h4:({children:l})=>jsxRuntime.jsx("h4",{className:i.markdown.h4.join(" "),children:l}),h5:({children:l})=>jsxRuntime.jsx("h5",{className:i.markdown.h5.join(" "),children:l}),ul:({children:l})=>jsxRuntime.jsx("ul",{className:i.markdown.ul.join(" "),children:l}),ol:({children:l})=>jsxRuntime.jsx("ol",{className:i.markdown.ol.join(" "),children:l}),li:({children:l})=>jsxRuntime.jsx("li",{className:i.markdown.li.join(" "),children:l}),a:({children:l,href:b})=>jsxRuntime.jsx("a",{href:b,className:i.markdown.a.join(" "),children:l}),strong:({children:l})=>jsxRuntime.jsx("strong",{className:i.markdown.strong.join(" "),children:l}),em:({children:l})=>jsxRuntime.jsx("em",{className:i.markdown.em.join(" "),children:l})},children:u()})})}switch(s){case "h1":return jsxRuntime.jsx("h1",{className:d(c),children:a});case "h2":return jsxRuntime.jsx("h2",{className:d(c),children:a});case "h3":return jsxRuntime.jsx("h3",{className:d(c),children:a});case "h4":return jsxRuntime.jsx("h4",{className:d(c),children:a});case "h5":return jsxRuntime.jsx("h5",{className:d(c),children:a});case "caption":return jsxRuntime.jsx("span",{className:d(c),children:a});default:return jsxRuntime.jsx("p",{className:d(c),children:a})}}function B({component:e,processor:t,surfaceId:o,url:n,usageHint:s,fit:r="cover"}){let i=m(),a=g(n,e,t,o);if(!a)return jsxRuntime.jsx("div",{className:"text-gray-400",children:"(no image)"});let c=A(i.components.Image.all,s?i.components.Image[s]:{}),u={objectFit:r??"cover"};return jsxRuntime.jsx("img",{src:a,alt:"",className:d(c),style:u})}function F({component:e,processor:t,surfaceId:o,name:n,size:s=20,className:r,container:i,variant:a}){let c=m(),u=g(n,e,t,o);if(!u)return null;let l=u.split("-").map(S=>S.charAt(0).toUpperCase()+S.slice(1)).join(""),b=Ze__namespace[l]??Ze__namespace[u],p={blue:"bg-blue-50 text-blue-600",green:"bg-green-50 text-green-600",purple:"bg-purple-50 text-purple-600",orange:"bg-orange-50 text-orange-600",red:"bg-red-50 text-red-600",primary:"bg-primary/10 text-primary"},y=a?p[a]:p.primary,D=()=>b?jsxRuntime.jsx(b,{size:s,className:d(c.components.Icon,r)}):jsxRuntime.jsx("span",{className:d(c.components.Icon,"material-icons",r),style:{fontSize:s},children:u});return i?jsxRuntime.jsx("div",{className:d("flex shrink-0 items-center justify-center rounded-xl transition-all duration-300","group-hover:scale-110 group-hover:shadow-sm",y),style:{width:40,height:40},children:D()}):D()}function $({component:e,processor:t,surfaceId:o,url:n}){let s=m(),r=g(n,e,t,o);return r?jsxRuntime.jsx("section",{className:d(s.components.Video),children:jsxRuntime.jsx("video",{controls:true,src:r,className:"w-full"})}):jsxRuntime.jsx("div",{className:"text-gray-400",children:"(no video)"})}function L({component:e,processor:t,surfaceId:o,url:n,description:s}){let r=m(),i=g(n,e,t,o),a=s?g(s,e,t,o):void 0;return i?jsxRuntime.jsxs("section",{className:d(r.components.AudioPlayer),children:[a&&jsxRuntime.jsx("p",{className:"mb-2 text-sm",children:a}),jsxRuntime.jsx("audio",{controls:true,src:i,className:"w-full"})]}):jsxRuntime.jsx("div",{className:"text-gray-400",children:"(no audio)"})}function O({component:e,action:t,children:o,onAction:n}){let s=m(),r=()=>{if(!t||!n)return;let i={eventType:"a2ui.action",action:t,dataContextPath:e.dataContextPath??"/",sourceComponentId:e.id,sourceComponent:e};n(i);};return jsxRuntime.jsx("button",{type:"button",className:d(s.components.Button),onClick:r,children:o})}var Ge={start:"items-start",center:"items-center",end:"items-end",stretch:"items-stretch"},Qe={start:"justify-start",center:"justify-center",end:"justify-end",spaceBetween:"justify-between",spaceAround:"justify-around",spaceEvenly:"justify-evenly"};function _({component:e,alignment:t="stretch",distribution:o="start",children:n}){let s=m(),r=Ge[t]??Ge.stretch,i=Qe[o]??Qe.start,a=e.properties??{},c=a.gap!==void 0?`gap-${a.gap}`:"";return jsxRuntime.jsx("section",{className:d(s.components.Row,r,i,c),children:n})}var Xe={start:"items-start",center:"items-center",end:"items-end",stretch:"items-stretch"},et={start:"justify-start",center:"justify-center",end:"justify-end",spaceBetween:"justify-between",spaceAround:"justify-around",spaceEvenly:"justify-evenly"};function z({component:e,alignment:t="stretch",distribution:o="start",children:n}){let s=m(),r=Xe[t]??Xe.stretch,i=et[o]??et.start,a=e.properties??{},c=a.spaceY!==void 0?`space-y-${a.spaceY}`:"";return jsxRuntime.jsx("section",{className:d(s.components.Column,r,i,c),children:n})}function K({direction:e="vertical",children:t}){let o=m(),n=e==="horizontal"?"flex-row overflow-x-auto":"flex-col";return jsxRuntime.jsx("section",{className:d(o.components.List,n),children:t})}function H({children:e}){let t=m();return jsxRuntime.jsx("section",{className:d(t.components.Card),children:e})}function W({component:e,processor:t,surfaceId:o,titles:n,children:s}){let r=m(),[i,a]=react.useState(0),c=()=>jsxRuntime.jsx("div",{className:d(r.components.Tabs.element),children:n.map((l,b)=>{let p=g(l,e,t,o),y=i===b?A(r.components.Tabs.controls.all,r.components.Tabs.controls.selected):{...r.components.Tabs.controls.all};return jsxRuntime.jsx("button",{disabled:i===b,className:d(y),onClick:()=>a(b),children:p},b)})}),u=s?.[i];return jsxRuntime.jsxs("section",{className:d(r.components.Tabs.container),children:[c(),jsxRuntime.jsx("div",{className:"mt-4",children:u})]})}function J({axis:e="horizontal",thickness:t=1,color:o}){let n=m(),s={};o&&(s.borderColor=o),t&&(s.borderWidth=t);let r=e==="vertical"?"border-l h-full":"border-t w-full";return jsxRuntime.jsx("hr",{className:d(n.components.Divider,r),style:s})}function Y({entryPoint:e,content:t}){let o=m(),[n,s]=react.useState(false),r=react.useCallback(()=>{s(false);},[]);return react.useEffect(()=>{if(!n)return;let i=a=>{a.key==="Escape"&&r();};return document.addEventListener("keydown",i),()=>document.removeEventListener("keydown",i)},[n,r]),n?jsxRuntime.jsx("dialog",{className:d(o.components.Modal.backdrop),open:true,role:"dialog","aria-modal":"true",onClick:i=>{i.target===i.currentTarget&&r();},children:jsxRuntime.jsxs("section",{className:d(o.components.Modal.element),children:[jsxRuntime.jsx("div",{className:"mb-2 flex justify-end",children:jsxRuntime.jsx("button",{type:"button",className:"rounded p-1 hover:bg-gray-100",onClick:r,"aria-label":"Close modal",children:"\u2715"})}),t]})}):jsxRuntime.jsx("button",{type:"button",onClick:()=>s(true),className:"cursor-pointer",children:e})}function q({component:e,processor:t,surfaceId:o,label:n,value:s}){let r=m(),i=g(n,e,t,o),a=false;s&&("literalBoolean"in s&&s.literalBoolean!==void 0?a=s.literalBoolean:"path"in s&&s.path&&t&&e&&(a=!!t.getData(e,s.path,o??R.DEFAULT_SURFACE_ID)));let c=u=>{!s||!t||!("path"in s)||!s.path||t.setData(e,s.path,u.target.checked,o??R.DEFAULT_SURFACE_ID);};return jsxRuntime.jsxs("section",{className:d(r.components.CheckBox.container),children:[jsxRuntime.jsx("input",{type:"checkbox",id:`checkbox-${e.id}`,className:d(r.components.CheckBox.element),checked:a,onChange:c}),jsxRuntime.jsx("label",{htmlFor:`checkbox-${e.id}`,className:d(r.components.CheckBox.label),children:i})]})}function Z({component:e,processor:t,surfaceId:o,label:n,text:s,type:r="shortText"}){let i=m(),a=g(n,e,t,o),c=s?g(s,e,t,o):"",u=p=>{!s||!t||!("path"in s)||!s.path||t.setData(e,s.path,p.target.value,o??R.DEFAULT_SURFACE_ID);},l=r==="number"?"number":r==="date"?"date":"text",b=r==="longText";return jsxRuntime.jsxs("section",{className:d(i.components.TextField.container),children:[a&&jsxRuntime.jsx("label",{htmlFor:`textfield-${e.id}`,className:d(i.components.TextField.label),children:a}),b?jsxRuntime.jsx("textarea",{id:`textfield-${e.id}`,className:d(i.components.TextField.element),value:c,onChange:u,placeholder:"Please enter a value",rows:4}):jsxRuntime.jsx("input",{id:`textfield-${e.id}`,type:l,className:d(i.components.TextField.element),value:c,onChange:u,placeholder:"Please enter a value",autoComplete:"off"})]})}function G({component:e,processor:t,surfaceId:o,value:n,enableDate:s=true,enableTime:r=true}){let i=m(),a=g(n,e,t,o),c=l=>{!n||!t||!("path"in n)||!n.path||t.setData(e,n.path,l.target.value,o??R.DEFAULT_SURFACE_ID);},u="datetime-local";return s&&!r?u="date":!s&&r&&(u="time"),jsxRuntime.jsx("section",{className:d(i.components.DateTimeInput.container),children:jsxRuntime.jsx("input",{type:u,id:`datetime-${e.id}`,className:d(i.components.DateTimeInput.element),value:a,onChange:c})})}function Q({component:e,processor:t,surfaceId:o,selections:n,options:s=[]}){let r=m(),i=a=>{!n||!t||!("path"in n)||!n.path||t.setData(e,n.path,[a.target.value],o??R.DEFAULT_SURFACE_ID);};return jsxRuntime.jsxs("section",{className:d(r.components.MultipleChoice.container),children:[jsxRuntime.jsx("label",{htmlFor:`multichoice-${e.id}`,className:d(r.components.MultipleChoice.label),children:"Select an item"}),jsxRuntime.jsx("select",{id:`multichoice-${e.id}`,className:d(r.components.MultipleChoice.element),onChange:i,children:s?.map((a,c)=>{let u=g(a.label,e,t,o);return jsxRuntime.jsx("option",{value:a.value,children:u},c)})})]})}function X({component:e,processor:t,surfaceId:o,value:n,minValue:s,maxValue:r}){let i=m(),a=M(n,e,t,o),c=typeof s=="number"?s:s?M(s,e,t,o):0,u=typeof r=="number"?r:r?M(r,e,t,o):100,l=b=>{!n||!t||!("path"in n)||!n.path||t.setData(e,n.path,Number(b.target.value),o??R.DEFAULT_SURFACE_ID);};return jsxRuntime.jsxs("section",{className:d(i.components.Slider.container),children:[jsxRuntime.jsx("input",{type:"range",id:`slider-${e.id}`,className:d(i.components.Slider.element),value:a,min:c,max:u,onChange:l}),jsxRuntime.jsx("span",{className:d(i.components.Slider.label),children:a})]})}var P=class{constructor(){T(this,"registry",new Map);}register(t,o){if(!/^[a-zA-Z0-9]+$/.test(t))throw new Error(`[Registry] Invalid typeName '${t}'. Must be alphanumeric.`);this.registry.set(t,o);}get(t){return this.registry.get(t)}has(t){return this.registry.has(t)}unregister(t){return this.registry.delete(t)}getRegisteredTypes(){return Array.from(this.registry.keys())}},V=new P;function E({processor:e,surfaceId:t,childComponents:o,enableCustomElements:n=false,onAction:s}){return !o||!Array.isArray(o)?null:jsxRuntime.jsx(jsxRuntime.Fragment,{children:o.map(r=>jsxRuntime.jsx(v,{component:r,processor:e,surfaceId:t,enableCustomElements:n,onAction:s},r.id))})}function v({component:e,processor:t,surfaceId:o,enableCustomElements:n,onAction:s}){if(n){let r=V.get(e.type);if(r)return jsxRuntime.jsx(r,{component:e,processor:t,surfaceId:o,...e.properties},e.id)}switch(e.type){case "Text":{let r=e;return jsxRuntime.jsx(j,{component:r,processor:t,surfaceId:o,text:r.properties.text,usageHint:r.properties.usageHint},r.id)}case "Image":{let r=e;return jsxRuntime.jsx(B,{component:r,processor:t,surfaceId:o,url:r.properties.url,usageHint:r.properties.usageHint,fit:r.properties.fit},r.id)}case "Icon":{let r=e;return jsxRuntime.jsx(F,{component:r,processor:t,surfaceId:o,name:r.properties.name,container:r.properties.container,variant:r.properties.variant,size:r.properties.size},r.id)}case "Video":{let r=e;return jsxRuntime.jsx($,{component:r,processor:t,surfaceId:o,url:r.properties.url},r.id)}case "AudioPlayer":{let r=e;return jsxRuntime.jsx(L,{component:r,processor:t,surfaceId:o,url:r.properties.url,description:r.properties.description},r.id)}case "Button":{let r=e;return jsxRuntime.jsx(O,{component:r,processor:t,surfaceId:o,action:r.properties.action,onAction:s,children:r.properties.child&&jsxRuntime.jsx(v,{component:r.properties.child,processor:t,surfaceId:o,enableCustomElements:n,onAction:s})},r.id)}case "Row":{let r=e;return jsxRuntime.jsx(_,{component:r,processor:t,surfaceId:o,alignment:r.properties.alignment,distribution:r.properties.distribution,children:r.properties.children?.map(i=>jsxRuntime.jsx(v,{component:i,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},i.id))},r.id)}case "Column":{let r=e;return jsxRuntime.jsx(z,{component:r,processor:t,surfaceId:o,alignment:r.properties.alignment,distribution:r.properties.distribution,children:r.properties.children?.map(i=>jsxRuntime.jsx(v,{component:i,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},i.id))},r.id)}case "List":{let r=e;return jsxRuntime.jsx(K,{component:r,processor:t,surfaceId:o,direction:r.properties.direction,children:r.properties.children?.map(i=>jsxRuntime.jsx(v,{component:i,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},i.id))},r.id)}case "Card":{let r=e,i=r.properties.children??(r.properties.child?[r.properties.child]:[]);return jsxRuntime.jsx(H,{component:r,processor:t,surfaceId:o,children:i.map(a=>jsxRuntime.jsx(v,{component:a,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},a.id))},r.id)}case "Tabs":{let r=e,i=r.properties.tabItems?.map(c=>c.title)??[],a=r.properties.tabItems?.map(c=>jsxRuntime.jsx(v,{component:c.child,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},c.child.id));return jsxRuntime.jsx(W,{component:r,processor:t,surfaceId:o,titles:i,children:a},r.id)}case "Divider":{let r=e;return jsxRuntime.jsx(J,{component:r,processor:t,surfaceId:o,axis:r.properties.axis,thickness:r.properties.thickness,color:r.properties.color},r.id)}case "Modal":{let r=e;return jsxRuntime.jsx(Y,{component:r,processor:t,surfaceId:o,entryPoint:jsxRuntime.jsx(v,{component:r.properties.entryPointChild,processor:t,surfaceId:o,enableCustomElements:n,onAction:s}),content:jsxRuntime.jsx(v,{component:r.properties.contentChild,processor:t,surfaceId:o,enableCustomElements:n,onAction:s})},r.id)}case "CheckBox":{let r=e;return jsxRuntime.jsx(q,{component:r,processor:t,surfaceId:o,label:r.properties.label,value:r.properties.value},r.id)}case "TextField":{let r=e;return jsxRuntime.jsx(Z,{component:r,processor:t,surfaceId:o,label:r.properties.label,text:r.properties.text,type:r.properties.type,validationRegexp:r.properties.validationRegexp},r.id)}case "DateTimeInput":{let r=e;return jsxRuntime.jsx(G,{component:r,processor:t,surfaceId:o,value:r.properties.value,enableDate:r.properties.enableDate,enableTime:r.properties.enableTime},r.id)}case "MultipleChoice":{let r=e;return jsxRuntime.jsx(Q,{component:r,processor:t,surfaceId:o,selections:r.properties.selections,options:r.properties.options,maxAllowedSelections:r.properties.maxAllowedSelections},r.id)}case "Slider":{let r=e;return jsxRuntime.jsx(X,{component:r,processor:t,surfaceId:o,value:r.properties.value,minValue:r.properties.minValue,maxValue:r.properties.maxValue},r.id)}default:{if(n){let r=V.get(e.type);if(r)return jsxRuntime.jsx(r,{component:e,processor:t,surfaceId:o,...e.properties},e.id)}return jsxRuntime.jsxs("div",{className:"rounded border border-yellow-300 p-2 text-yellow-600",children:["Unknown component type: ",e.type]},e.id)}}}function Ve({surfaceId:e,surface:t,processor:o,enableCustomElements:n=false,onAction:s}){if(!t)return null;let r=()=>t.styles?.logoUrl?jsxRuntime.jsx("div",{className:"mb-4 flex justify-center",children:jsxRuntime.jsx("img",{src:t.styles.logoUrl,alt:"Logo",className:"w-1/2 max-w-[220px]"})}):null,i=()=>jsxRuntime.jsx(E,{surfaceId:e,processor:o,childComponents:t.componentTree?[t.componentTree]:null,enableCustomElements:n,onAction:s});return jsxRuntime.jsxs("div",{className:"a2ui-surface a2ui-root flex flex-col gap-8 p-10 pb-20",style:{"--p-50":t.styles?.primaryColor??"var(--primary)"},children:[r(),i()]})}function Ee({children:e,className:t}){let o=m();return jsxRuntime.jsx("div",{className:t,children:jsxRuntime.jsx(nt__default.default,{components:{p:({children:n})=>jsxRuntime.jsx("p",{className:o.markdown.p.join(" "),children:n}),h1:({children:n})=>jsxRuntime.jsx("h1",{className:o.markdown.h1.join(" "),children:n}),h2:({children:n})=>jsxRuntime.jsx("h2",{className:o.markdown.h2.join(" "),children:n}),h3:({children:n})=>jsxRuntime.jsx("h3",{className:o.markdown.h3.join(" "),children:n}),h4:({children:n})=>jsxRuntime.jsx("h4",{className:o.markdown.h4.join(" "),children:n}),h5:({children:n})=>jsxRuntime.jsx("h5",{className:o.markdown.h5.join(" "),children:n}),ul:({children:n})=>jsxRuntime.jsx("ul",{className:o.markdown.ul.join(" "),children:n}),ol:({children:n})=>jsxRuntime.jsx("ol",{className:o.markdown.ol.join(" "),children:n}),li:({children:n})=>jsxRuntime.jsx("li",{className:o.markdown.li.join(" "),children:n}),a:({children:n,href:s})=>jsxRuntime.jsx("a",{href:s,className:o.markdown.a.join(" "),children:n}),strong:({children:n})=>jsxRuntime.jsx("strong",{className:o.markdown.strong.join(" "),children:n}),em:({children:n})=>jsxRuntime.jsx("em",{className:o.markdown.em.join(" "),children:n})},children:e})})}function Ue(e){return jsxRuntime.jsx(nt__default.default,{children:e})}var je=react.createContext({processor:null,surfaceId:null});function Ut({processor:e,surfaceId:t="@default",children:o}){return jsxRuntime.jsx(je.Provider,{value:{processor:e,surfaceId:t},children:o})}function jt(){return react.useContext(je)}
|
|
2
|
+
exports.A2UIRoot=E;exports.A2UI_EVENT_NAME=Oe;exports.A2uiMessageProcessor=R;exports.Audio=L;exports.Button=O;exports.Card=H;exports.Checkbox=q;exports.Column=z;exports.ComponentRegistry=P;exports.ComponentRenderer=v;exports.Data=Le;exports.DateTimeInput=G;exports.Divider=J;exports.Events=_e;exports.Icon=F;exports.Image=B;exports.List=K;exports.Markdown=Ee;exports.Modal=Y;exports.MultipleChoice=Q;exports.ProcessorContext=je;exports.ProcessorProvider=Ut;exports.Root=E;exports.Row=_;exports.Slider=X;exports.Styles=Ye;exports.Surface=Ve;exports.Tabs=W;exports.Text=j;exports.TextField=Z;exports.ThemeContext=Te;exports.ThemeProvider=dt;exports.Types=at;exports.UI=st;exports.Video=$;exports.appendToAll=ze;exports.classesToString=Ke;exports.cn=d;exports.componentRegistry=V;exports.createMessageProcessor=$e;exports.createTheme=Je;exports.defaultTheme=k;exports.extractNumberValue=M;exports.extractStringValue=g;exports.isAnyComponentNode=N;exports.isBooleanValue=Ne;exports.isComponentArrayReference=re;exports.isNumberValue=ve;exports.isObject=f;exports.isPath=te;exports.isResolvedAudioPlayer=oe;exports.isResolvedButton=ne;exports.isResolvedCard=se;exports.isResolvedCheckbox=ie;exports.isResolvedColumn=ae;exports.isResolvedDateTimeInput=le;exports.isResolvedDivider=ce;exports.isResolvedIcon=ue;exports.isResolvedImage=de;exports.isResolvedList=pe;exports.isResolvedModal=me;exports.isResolvedMultipleChoice=fe;exports.isResolvedRow=he;exports.isResolvedSlider=ye;exports.isResolvedTabItem=Ie;exports.isResolvedTabs=ge;exports.isResolvedText=xe;exports.isResolvedTextField=be;exports.isResolvedVideo=Re;exports.isStringValue=I;exports.isValueMap=Fe;exports.merge=A;exports.renderMarkdown=Ue;exports.stylesToCSS=He;exports.useProcessor=jt;exports.useTheme=m;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import nt from'react-markdown';import {createContext,useContext,useState,useCallback,useEffect}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import*as Ze from'lucide-react';var Be=Object.defineProperty;var it=(e,t,o)=>t in e?Be(e,t,{enumerable:true,configurable:true,writable:true,value:o}):e[t]=o;var ee=(e,t)=>{for(var o in t)Be(e,o,{get:t[o],enumerable:true});};var T=(e,t,o)=>it(e,typeof t!="symbol"?t+"":t,o);var Le={};ee(Le,{A2uiMessageProcessor:()=>R,createMessageProcessor:()=>$e,isAnyComponentNode:()=>N,isBooleanValue:()=>Ne,isComponentArrayReference:()=>re,isNumberValue:()=>ve,isObject:()=>f,isPath:()=>te,isResolvedAudioPlayer:()=>oe,isResolvedButton:()=>ne,isResolvedCard:()=>se,isResolvedCheckbox:()=>ie,isResolvedColumn:()=>ae,isResolvedDateTimeInput:()=>le,isResolvedDivider:()=>ce,isResolvedIcon:()=>ue,isResolvedImage:()=>de,isResolvedList:()=>pe,isResolvedModal:()=>me,isResolvedMultipleChoice:()=>fe,isResolvedRow:()=>he,isResolvedSlider:()=>ye,isResolvedTabItem:()=>Ie,isResolvedTabs:()=>ge,isResolvedText:()=>xe,isResolvedTextField:()=>be,isResolvedVideo:()=>Re,isStringValue:()=>I,isValueMap:()=>Fe});function Fe(e){return f(e)&&"key"in e}function te(e,t){return e==="path"&&typeof t=="string"}function f(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function re(e){return f(e)?"explicitList"in e||"template"in e:false}function I(e){return f(e)&&("path"in e||"literal"in e&&typeof e.literal=="string"||"literalString"in e)}function ve(e){return f(e)&&("path"in e||"literal"in e&&typeof e.literal=="number"||"literalNumber"in e)}function Ne(e){return f(e)&&("path"in e||"literal"in e&&typeof e.literal=="boolean"||"literalBoolean"in e)}function N(e){return f(e)?"id"in e&&"type"in e&&"properties"in e:false}function oe(e){return f(e)&&"url"in e&&I(e.url)}function ne(e){return f(e)&&"child"in e&&N(e.child)&&"action"in e}function se(e){return f(e)?"child"in e?N(e.child):"children"in e?Array.isArray(e.children)&&e.children.every(N):false:false}function ie(e){return f(e)&&"label"in e&&I(e.label)&&"value"in e&&Ne(e.value)}function ae(e){return f(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(N)}function le(e){return f(e)&&"value"in e&&I(e.value)}function ce(e){return f(e)}function de(e){return f(e)&&"url"in e&&I(e.url)}function ue(e){return f(e)&&"name"in e&&I(e.name)}function pe(e){return f(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(N)}function me(e){return f(e)&&"entryPointChild"in e&&N(e.entryPointChild)&&"contentChild"in e&&N(e.contentChild)}function fe(e){return f(e)&&"selections"in e}function he(e){return f(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(N)}function ye(e){return f(e)&&"value"in e&&ve(e.value)}function Ie(e){return f(e)&&"title"in e&&I(e.title)&&"child"in e&&N(e.child)}function ge(e){return f(e)&&"tabItems"in e&&Array.isArray(e.tabItems)&&e.tabItems.every(Ie)}function xe(e){return f(e)&&"text"in e&&I(e.text)}function be(e){return f(e)&&"label"in e&&I(e.label)}function Re(e){return f(e)&&"url"in e&&I(e.url)}var U=class U{constructor(t={}){T(this,"mapCtor",Map);T(this,"arrayCtor",Array);T(this,"setCtor",Set);T(this,"objCtor",Object);T(this,"surfaces");this.arrayCtor=t.arrayCtor??Array,this.mapCtor=t.mapCtor??Map,this.setCtor=t.setCtor??Set,this.objCtor=t.objCtor??Object,this.surfaces=new this.mapCtor;}getSurfaces(){return this.surfaces}clearSurfaces(){this.surfaces.clear();}processMessages(t){for(let o of t)o.beginRendering&&this.handleBeginRendering(o.beginRendering,o.beginRendering.surfaceId),o.surfaceUpdate&&this.handleSurfaceUpdate(o.surfaceUpdate,o.surfaceUpdate.surfaceId),o.dataModelUpdate&&this.handleDataModelUpdate(o.dataModelUpdate,o.dataModelUpdate.surfaceId),o.deleteSurface&&this.handleDeleteSurface(o.deleteSurface);}getData(t,o,n=U.DEFAULT_SURFACE_ID){let s=this.getOrCreateSurface(n);if(!s)return null;let r;return o==="."||o===""?r=t.dataContextPath??"/":r=this.resolvePath(o,t.dataContextPath),this.getDataByPath(s.dataModel,r)}setData(t,o,n,s=U.DEFAULT_SURFACE_ID){if(!t){console.warn("No component node set");return}let r=this.getOrCreateSurface(s);if(!r)return;let i;o==="."||o===""?i=t.dataContextPath??"/":i=this.resolvePath(o,t.dataContextPath),this.setDataByPath(r.dataModel,i,n);}resolvePath(t,o){return t.startsWith("/")?t:o&&o!=="/"?o.endsWith("/")?`${o}${t}`:`${o}/${t}`:`/${t}`}parseIfJsonString(t){if(typeof t!="string")return t;let o=t.trim();if(o.startsWith("{")&&o.endsWith("}")||o.startsWith("[")&&o.endsWith("]"))try{return JSON.parse(t)}catch{return console.warn(`Failed to parse potential JSON string: "${t.substring(0,50)}..."`),t}return t}convertKeyValueArrayToMap(t){let o=new this.mapCtor;for(let n of t){if(!f(n)||!("key"in n))continue;let s=n.key,r=this.findValueKey(n);if(!r)continue;let i=n[r];r==="valueMap"&&Array.isArray(i)?i=this.convertKeyValueArrayToMap(i):typeof i=="string"&&(i=this.parseIfJsonString(i)),this.setDataByPath(o,s,i);}return o}setDataByPath(t,o,n){if(Array.isArray(n)&&(n.length===0||f(n[0])&&"key"in n[0]))if(n.length===1&&f(n[0])&&n[0].key==="."){let a=n[0],c=this.findValueKey(a);c?(n=a[c],c==="valueMap"&&Array.isArray(n)?n=this.convertKeyValueArrayToMap(n):typeof n=="string"&&(n=this.parseIfJsonString(n))):n=this.convertKeyValueArrayToMap(n);}else n=this.convertKeyValueArrayToMap(n);let s=this.normalizePath(o).split("/").filter(a=>a);if(s.length===0){if(n instanceof Map||f(n)){!(n instanceof Map)&&f(n)&&(n=new this.mapCtor(Object.entries(n))),t.clear();for(let[a,c]of n.entries())t.set(a,c);}else console.error("Cannot set root of DataModel to a non-Map value.");return}let r=t;for(let a=0;a<s.length-1;a++){let c=s[a],u;r instanceof Map?u=r.get(c):Array.isArray(r)&&/^\d+$/.test(c)&&(u=r[parseInt(c,10)]),(u===void 0||typeof u!="object"||u===null)&&(u=new this.mapCtor,r instanceof this.mapCtor?r.set(c,u):Array.isArray(r)&&(r[parseInt(c,10)]=u)),r=u;}let i=s[s.length-1];r instanceof this.mapCtor?r.set(i,n):Array.isArray(r)&&/^\d+$/.test(i)&&(r[parseInt(i,10)]=n);}normalizePath(t){return "/"+t.replace(/\[(\d+)\]/g,".$1").split(".").filter(s=>s.length>0).join("/")}getDataByPath(t,o){let n=this.normalizePath(o).split("/").filter(r=>r),s=t;for(let r of n){if(s==null)return null;if(s instanceof Map)s=s.get(r);else if(Array.isArray(s)&&/^\d+$/.test(r))s=s[parseInt(r,10)];else if(f(s))s=s[r];else return null}return s??null}getOrCreateSurface(t){let o=this.surfaces.get(t);return o||(o={rootComponentId:null,componentTree:null,dataModel:new this.mapCtor,components:new this.mapCtor,styles:{}},this.surfaces.set(t,o)),o}handleBeginRendering(t,o){let n=this.getOrCreateSurface(o);n.rootComponentId=t.root,n.styles=t.styles??{},this.rebuildComponentTree(n);}handleSurfaceUpdate(t,o){let n=this.getOrCreateSurface(o);for(let s of t.components)n.components.set(s.id,s);this.rebuildComponentTree(n);}handleDataModelUpdate(t,o){let n=this.getOrCreateSurface(o),s=t.path??"/";this.setDataByPath(n.dataModel,s,t.contents),this.rebuildComponentTree(n);}handleDeleteSurface(t){this.surfaces.delete(t.surfaceId);}rebuildComponentTree(t){if(!t.rootComponentId){t.componentTree=null;return}let o=new this.setCtor;t.componentTree=this.buildNodeRecursive(t.rootComponentId,t,o,"/","");}findValueKey(t){return Object.keys(t).find(o=>o.startsWith("value"))}buildNodeRecursive(t,o,n,s,r=""){let i=`${t}${r}`,{components:a}=o;if(!a.has(t))return null;if(n.has(i))throw new Error(`Circular dependency for component "${i}".`);n.add(i);let c=a.get(t),u=c.component??{},l=Object.keys(u)[0]??"Unknown",b=u[l],p={};if(f(b))for(let[D,S]of Object.entries(b))p[D]=this.resolvePropertyValue(S,o,n,s,r);n.delete(i);let y={id:i,dataContextPath:s,weight:c.weight??"initial"};switch(l){case "Text":if(!xe(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Text",properties:p};case "Image":if(!de(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Image",properties:p};case "Icon":if(!ue(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Icon",properties:p};case "Video":if(!Re(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Video",properties:p};case "AudioPlayer":if(!oe(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"AudioPlayer",properties:p};case "Row":if(!he(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Row",properties:p};case "Column":if(!ae(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Column",properties:p};case "List":if(!pe(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"List",properties:p};case "Card":if(!se(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Card",properties:p};case "Tabs":if(!ge(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Tabs",properties:p};case "Divider":if(!ce(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Divider",properties:p};case "Modal":if(!me(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Modal",properties:p};case "Button":if(!ne(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Button",properties:p};case "CheckBox":if(!ie(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"CheckBox",properties:p};case "TextField":if(!be(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"TextField",properties:p};case "DateTimeInput":if(!le(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"DateTimeInput",properties:p};case "MultipleChoice":if(!fe(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"MultipleChoice",properties:p};case "Slider":if(!ye(p))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Slider",properties:p};default:return {...y,type:l,properties:p}}}resolvePropertyValue(t,o,n,s,r=""){if(typeof t=="string"&&o.components.has(t))return this.buildNodeRecursive(t,o,n,s,r);if(re(t)){if(t.explicitList)return t.explicitList.map(i=>this.buildNodeRecursive(i,o,n,s,r));if(t.template){let i=this.resolvePath(t.template.dataBinding,s),a=this.getDataByPath(o.dataModel,i),c=t.template;return Array.isArray(a)?a.map((u,l)=>{let y=`:${[...s.split("/").filter(S=>/^\d+$/.test(S)),l].join(":")}`,D=`${i}/${l}`;return this.buildNodeRecursive(c.componentId,o,n,D,y)}):a instanceof Map?Array.from(a.keys(),u=>{let l=`:${u}`,b=`${i}/${u}`;return this.buildNodeRecursive(c.componentId,o,n,b,l)}):[]}}if(Array.isArray(t))return t.map(i=>this.resolvePropertyValue(i,o,n,s,r));if(f(t)){let i={};for(let[a,c]of Object.entries(t)){let u=c;if(te(a,c)&&s!=="/"){u=c.replace(/^\.?\/item/,"").replace(/^\.?\/text/,"").replace(/^\.?\/label/,"").replace(/^\.?\//,""),i[a]=u;continue}i[a]=this.resolvePropertyValue(u,o,n,s,r);}return i}return t}};T(U,"DEFAULT_SURFACE_ID","@default");var R=U;function $e(){return new R}var _e={};ee(_e,{A2UI_EVENT_NAME:()=>Oe});var Oe="a2uiaction";var at={};var Ye={};ee(Ye,{appendToAll:()=>ze,classesToString:()=>Ke,createTheme:()=>Je,defaultTheme:()=>k,merge:()=>A,stylesToCSS:()=>He});function A(...e){let t={};for(let o of e)if(o)for(let[n,s]of Object.entries(o)){let r=n.split("-").slice(0,-1).join("-")+"-",i=Object.keys(t).filter(a=>a.startsWith(r));for(let a of i)delete t[a];t[n]=s;}return t}function ze(e,t,...o){let n=structuredClone(e);for(let s of o)for(let r of Object.keys(s)){let i=r.split("-").slice(0,-1).join("-")+"-";for(let[a,c]of Object.entries(n)){if(t.includes(a))continue;let u=false;for(let l=0;l<c.length;l++)c[l]?.startsWith(i)&&(u=true,c[l]=r);u||c.push(r);}}return n}function Ke(e){return Object.entries(e).filter(([,t])=>t).map(([t])=>t).join(" ")}function He(e){let t={};for(let[o,n]of Object.entries(e)){let s=o.replace(/-([a-z])/g,(r,i)=>i.toUpperCase());t[s]=n;}return t}function w(){return {}}var k={components:{AudioPlayer:w(),Button:{"a2ui-btn":true,"inline-flex":true,"items-center":true,"justify-center":true,"whitespace-nowrap":true,"rounded-xl":true,"text-xs":true,"font-medium":true,"transition-all":true,"duration-300":true,"disabled:pointer-events-none":true,"disabled:opacity-50":true,"active:scale-95":true,"bg-primary":true,"text-primary-foreground":true,"hover:bg-primary/90":true,"shadow-sm":true,"h-9":true,"px-4":true,"py-2":true},Card:{"a2ui-card":true,group:true,relative:true,"rounded-2xl":true,border:true,"border-border/50":true,"bg-card":true,"text-card-foreground":true,"shadow-sm":true,"transition-all":true,"duration-300":true,"hover:shadow-md":true,"hover:border-primary/40":true,"hover:-translate-y-1":true,"p-5":true,"overflow-hidden":true},Column:{"a2ui-column":true,flex:true,"flex-col":true,"space-y-4":true},CheckBox:{container:{"a2ui-checkbox":true,flex:true,"items-center":true,"gap-2":true},element:{"w-4":true,"h-4":true},label:{"text-sm":true,"font-medium":true}},DateTimeInput:{container:{"a2ui-datetime":true,flex:true,"flex-col":true,"gap-1":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"transition-colors":true},label:{"text-sm":true,"font-medium":true}},Divider:{"a2ui-divider":true,"border-t":true,"border-border/50":true,"my-8":true},Image:{all:{"a2ui-image":true,"max-w-full":true,"h-auto":true},icon:{"w-6":true,"h-6":true},avatar:{"w-10":true,"h-10":true,"rounded-full":true},smallFeature:{"w-24":true,"h-24":true},mediumFeature:{"w-48":true,"h-48":true},largeFeature:{"w-full":true,"max-h-96":true},header:{"w-full":true,"h-32":true,"object-cover":true}},Icon:{"a2ui-icon":true,"w-5":true,"h-5":true},List:{"a2ui-list":true,grid:true,"grid-cols-1":true,"md:grid-cols-2":true,"gap-4":true,"w-full":true},Modal:{backdrop:{fixed:true,"inset-0":true,"bg-black/50":true,flex:true,"items-center":true,"justify-center":true,"z-50":true},element:{"bg-card":true,"rounded-lg":true,"p-6":true,"max-w-lg":true,"w-full":true,"mx-4":true,"shadow-xl":true,border:true,"border-border":true,"border-white/60":true}},MultipleChoice:{container:{"a2ui-multichoice":true,flex:true,"flex-col":true,"gap-2":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"w-full":true},label:{"text-sm":true,"font-medium":true}},Row:{"a2ui-row":true,flex:true,"flex-row":true,"items-center":true,"justify-between":true,"gap-6":true,"w-full":true},Slider:{container:{"a2ui-slider":true,flex:true,"flex-col":true,"gap-1":true},element:{"w-full":true},label:{"text-sm":true,"font-medium":true}},Tabs:{container:{"a2ui-tabs":true,flex:true,"flex-col":true,"space-y-4":true},element:{flex:true,"border-b":true,"border-border":true},controls:{all:{"px-4":true,"py-2":true,"text-sm":true,"font-medium":true,"cursor-pointer":true,"transition-colors":true,"rounded-t-md":true},selected:{"border-b-2":true,"border-primary":true,"text-primary":true,"-mb-px":true}}},Text:{all:{"a2ui-text":true},h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true,"mb-4":true},h2:{"text-xl":true,"font-semibold":true,"mb-2":true},h3:{"text-lg":true,"font-medium":true,"mb-1":true},h4:{"text-base":true,"font-medium":true},h5:{"text-sm":true,"font-medium":true},h6:{"text-xs":true,"font-medium":true},body:{"text-base":true,"leading-relaxed":true,"text-foreground/90":true},caption:{"text-sm":true,"text-muted-foreground":true,"leading-relaxed":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},TextField:{container:{"a2ui-textfield":true,flex:true,"flex-col":true,"gap-1.5":true},element:{flex:true,"h-10":true,"w-full":true,"rounded-md":true,border:true,"border-input":true,"bg-background":true,"px-3":true,"py-2":true,"text-sm":true,"ring-offset-background":true,"transition-colors":true,"placeholder:text-muted-foreground":true,"focus-visible:outline-none":true,"focus-visible:ring-2":true,"focus-visible:ring-ring":true,"focus-visible:ring-offset-2":true,"disabled:cursor-not-allowed":true,"disabled:opacity-50":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},Video:{"a2ui-video":true,"w-full":true,"rounded-2xl":true,border:true,"border-border/50":true}},elements:{a:{"text-primary":true,"underline-offset-4":true,"hover:underline":true,"transition-colors":true},audio:w(),body:{"text-base":true},button:w(),h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true},h2:{"text-xl":true,"font-semibold":true},h3:{"text-lg":true,"font-bold":true},h4:{"text-base":true,"font-semibold":true},h5:{"text-base":true,"font-medium":true},iframe:w(),input:w(),p:{"text-base":true,"leading-relaxed":true},pre:{"font-mono":true,"text-sm":true,"bg-muted":true,"p-4":true,"rounded-md":true,"overflow-x-auto":true,border:true,"border-border":true},textarea:w(),video:w()},markdown:{p:["text-[15px]","leading-[1.7]","mb-3"],h1:["text-xl","font-bold","tracking-tight","mt-6","mb-4"],h2:["text-[17px]","font-semibold","mt-5","mb-3"],h3:["text-[15px]","font-semibold","mt-4","mb-2"],h4:["text-[15px]","font-medium","mt-3","mb-2"],h5:["text-sm","font-medium","mt-3","mb-2"],ul:["list-disc","list-outside","ml-5","mb-3","space-y-1.5"],ol:["list-decimal","list-outside","ml-5","mb-3","space-y-1.5"],li:["text-[15px]","leading-[1.7]","pl-1"],a:["text-primary","underline-offset-2","hover:underline","font-medium"],strong:["font-semibold"],em:["not-italic","opacity-80"],code:["font-mono","text-[13px]","bg-muted/60","px-1.5","py-0.5","rounded","border","border-border/50"],blockquote:["border-l-3","border-primary/40","pl-4","py-2","text-muted-foreground","bg-muted/30","rounded-r","mb-3","text-[14px]"]}};function We(e,t){let o={...e};for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let s=o[n],r=t[n];typeof s=="object"&&s!==null&&typeof r=="object"&&r!==null&&!Array.isArray(s)&&!Array.isArray(r)?o[n]=We(s,r):o[n]=r;}return o}function Je(e){return We(k,e)}var st={};ee(st,{Audio:()=>L,Button:()=>O,Card:()=>H,Checkbox:()=>q,Column:()=>z,ComponentRegistry:()=>P,ComponentRenderer:()=>v,DateTimeInput:()=>G,Divider:()=>J,Icon:()=>F,Image:()=>B,List:()=>K,Markdown:()=>Ee,Modal:()=>Y,MultipleChoice:()=>Q,Root:()=>E,Row:()=>_,Slider:()=>X,Surface:()=>Ve,Tabs:()=>W,Text:()=>j,TextField:()=>Z,Video:()=>$,cn:()=>d,componentRegistry:()=>V,extractNumberValue:()=>M,extractStringValue:()=>g,renderMarkdown:()=>Ue});var Te=createContext(k);function dt({theme:e=k,children:t}){return jsx(Te.Provider,{value:e,children:t})}function m(){return useContext(Te)}function g(e,t,o,n){if(e!==null&&typeof e=="object"){if("literalString"in e)return e.literalString??"";if("literal"in e&&e.literal!==void 0)return e.literal??"";if(e&&"path"in e&&e.path){if(!o||!t)return "(no model)";let s=o.getData(t,e.path,n??R.DEFAULT_SURFACE_ID);return s===null||typeof s!="string"?"":s}}return ""}function M(e,t,o,n){if(e!==null&&typeof e=="object"){if("literalNumber"in e)return e.literalNumber??0;if("literal"in e&&e.literal!==void 0)return e.literal??0;if(e&&"path"in e&&e.path){if(!o||!t)return -1;let s=o.getData(t,e.path,n??R.DEFAULT_SURFACE_ID);return typeof s=="string"&&(s=Number.parseInt(s,10),Number.isNaN(s)&&(s=null)),s===null||typeof s!="number"?-1:s}}return 0}function d(...e){let t=[];for(let o of e)if(o){if(typeof o=="string")t.push(o);else if(typeof o=="object")for(let[n,s]of Object.entries(o))s&&t.push(n);}return t.join(" ")}function j({component:e,processor:t,surfaceId:o,text:n,usageHint:s="body",markdown:r=true}){let i=m(),a=g(n,e,t,o);if(!a)return jsx("span",{className:"text-gray-400",children:"(empty)"});let c=A(i.components.Text.all,s?i.components.Text[s]:{});if(r){let u=()=>{switch(s){case "h1":return `# ${a}`;case "h2":return `## ${a}`;case "h3":return `### ${a}`;case "h4":return `#### ${a}`;case "h5":return `##### ${a}`;case "caption":return `*${a}*`;default:return a}};return jsx("section",{className:d(c),children:jsx(nt,{components:{p:({children:l})=>jsx("p",{className:i.markdown.p.join(" "),children:l}),h1:({children:l})=>jsx("h1",{className:i.markdown.h1.join(" "),children:l}),h2:({children:l})=>jsx("h2",{className:i.markdown.h2.join(" "),children:l}),h3:({children:l})=>jsx("h3",{className:i.markdown.h3.join(" "),children:l}),h4:({children:l})=>jsx("h4",{className:i.markdown.h4.join(" "),children:l}),h5:({children:l})=>jsx("h5",{className:i.markdown.h5.join(" "),children:l}),ul:({children:l})=>jsx("ul",{className:i.markdown.ul.join(" "),children:l}),ol:({children:l})=>jsx("ol",{className:i.markdown.ol.join(" "),children:l}),li:({children:l})=>jsx("li",{className:i.markdown.li.join(" "),children:l}),a:({children:l,href:b})=>jsx("a",{href:b,className:i.markdown.a.join(" "),children:l}),strong:({children:l})=>jsx("strong",{className:i.markdown.strong.join(" "),children:l}),em:({children:l})=>jsx("em",{className:i.markdown.em.join(" "),children:l})},children:u()})})}switch(s){case "h1":return jsx("h1",{className:d(c),children:a});case "h2":return jsx("h2",{className:d(c),children:a});case "h3":return jsx("h3",{className:d(c),children:a});case "h4":return jsx("h4",{className:d(c),children:a});case "h5":return jsx("h5",{className:d(c),children:a});case "caption":return jsx("span",{className:d(c),children:a});default:return jsx("p",{className:d(c),children:a})}}function B({component:e,processor:t,surfaceId:o,url:n,usageHint:s,fit:r="cover"}){let i=m(),a=g(n,e,t,o);if(!a)return jsx("div",{className:"text-gray-400",children:"(no image)"});let c=A(i.components.Image.all,s?i.components.Image[s]:{}),u={objectFit:r??"cover"};return jsx("img",{src:a,alt:"",className:d(c),style:u})}function F({component:e,processor:t,surfaceId:o,name:n,size:s=20,className:r,container:i,variant:a}){let c=m(),u=g(n,e,t,o);if(!u)return null;let l=u.split("-").map(S=>S.charAt(0).toUpperCase()+S.slice(1)).join(""),b=Ze[l]??Ze[u],p={blue:"bg-blue-50 text-blue-600",green:"bg-green-50 text-green-600",purple:"bg-purple-50 text-purple-600",orange:"bg-orange-50 text-orange-600",red:"bg-red-50 text-red-600",primary:"bg-primary/10 text-primary"},y=a?p[a]:p.primary,D=()=>b?jsx(b,{size:s,className:d(c.components.Icon,r)}):jsx("span",{className:d(c.components.Icon,"material-icons",r),style:{fontSize:s},children:u});return i?jsx("div",{className:d("flex shrink-0 items-center justify-center rounded-xl transition-all duration-300","group-hover:scale-110 group-hover:shadow-sm",y),style:{width:40,height:40},children:D()}):D()}function $({component:e,processor:t,surfaceId:o,url:n}){let s=m(),r=g(n,e,t,o);return r?jsx("section",{className:d(s.components.Video),children:jsx("video",{controls:true,src:r,className:"w-full"})}):jsx("div",{className:"text-gray-400",children:"(no video)"})}function L({component:e,processor:t,surfaceId:o,url:n,description:s}){let r=m(),i=g(n,e,t,o),a=s?g(s,e,t,o):void 0;return i?jsxs("section",{className:d(r.components.AudioPlayer),children:[a&&jsx("p",{className:"mb-2 text-sm",children:a}),jsx("audio",{controls:true,src:i,className:"w-full"})]}):jsx("div",{className:"text-gray-400",children:"(no audio)"})}function O({component:e,action:t,children:o,onAction:n}){let s=m(),r=()=>{if(!t||!n)return;let i={eventType:"a2ui.action",action:t,dataContextPath:e.dataContextPath??"/",sourceComponentId:e.id,sourceComponent:e};n(i);};return jsx("button",{type:"button",className:d(s.components.Button),onClick:r,children:o})}var Ge={start:"items-start",center:"items-center",end:"items-end",stretch:"items-stretch"},Qe={start:"justify-start",center:"justify-center",end:"justify-end",spaceBetween:"justify-between",spaceAround:"justify-around",spaceEvenly:"justify-evenly"};function _({component:e,alignment:t="stretch",distribution:o="start",children:n}){let s=m(),r=Ge[t]??Ge.stretch,i=Qe[o]??Qe.start,a=e.properties??{},c=a.gap!==void 0?`gap-${a.gap}`:"";return jsx("section",{className:d(s.components.Row,r,i,c),children:n})}var Xe={start:"items-start",center:"items-center",end:"items-end",stretch:"items-stretch"},et={start:"justify-start",center:"justify-center",end:"justify-end",spaceBetween:"justify-between",spaceAround:"justify-around",spaceEvenly:"justify-evenly"};function z({component:e,alignment:t="stretch",distribution:o="start",children:n}){let s=m(),r=Xe[t]??Xe.stretch,i=et[o]??et.start,a=e.properties??{},c=a.spaceY!==void 0?`space-y-${a.spaceY}`:"";return jsx("section",{className:d(s.components.Column,r,i,c),children:n})}function K({direction:e="vertical",children:t}){let o=m(),n=e==="horizontal"?"flex-row overflow-x-auto":"flex-col";return jsx("section",{className:d(o.components.List,n),children:t})}function H({children:e}){let t=m();return jsx("section",{className:d(t.components.Card),children:e})}function W({component:e,processor:t,surfaceId:o,titles:n,children:s}){let r=m(),[i,a]=useState(0),c=()=>jsx("div",{className:d(r.components.Tabs.element),children:n.map((l,b)=>{let p=g(l,e,t,o),y=i===b?A(r.components.Tabs.controls.all,r.components.Tabs.controls.selected):{...r.components.Tabs.controls.all};return jsx("button",{disabled:i===b,className:d(y),onClick:()=>a(b),children:p},b)})}),u=s?.[i];return jsxs("section",{className:d(r.components.Tabs.container),children:[c(),jsx("div",{className:"mt-4",children:u})]})}function J({axis:e="horizontal",thickness:t=1,color:o}){let n=m(),s={};o&&(s.borderColor=o),t&&(s.borderWidth=t);let r=e==="vertical"?"border-l h-full":"border-t w-full";return jsx("hr",{className:d(n.components.Divider,r),style:s})}function Y({entryPoint:e,content:t}){let o=m(),[n,s]=useState(false),r=useCallback(()=>{s(false);},[]);return useEffect(()=>{if(!n)return;let i=a=>{a.key==="Escape"&&r();};return document.addEventListener("keydown",i),()=>document.removeEventListener("keydown",i)},[n,r]),n?jsx("dialog",{className:d(o.components.Modal.backdrop),open:true,role:"dialog","aria-modal":"true",onClick:i=>{i.target===i.currentTarget&&r();},children:jsxs("section",{className:d(o.components.Modal.element),children:[jsx("div",{className:"mb-2 flex justify-end",children:jsx("button",{type:"button",className:"rounded p-1 hover:bg-gray-100",onClick:r,"aria-label":"Close modal",children:"\u2715"})}),t]})}):jsx("button",{type:"button",onClick:()=>s(true),className:"cursor-pointer",children:e})}function q({component:e,processor:t,surfaceId:o,label:n,value:s}){let r=m(),i=g(n,e,t,o),a=false;s&&("literalBoolean"in s&&s.literalBoolean!==void 0?a=s.literalBoolean:"path"in s&&s.path&&t&&e&&(a=!!t.getData(e,s.path,o??R.DEFAULT_SURFACE_ID)));let c=u=>{!s||!t||!("path"in s)||!s.path||t.setData(e,s.path,u.target.checked,o??R.DEFAULT_SURFACE_ID);};return jsxs("section",{className:d(r.components.CheckBox.container),children:[jsx("input",{type:"checkbox",id:`checkbox-${e.id}`,className:d(r.components.CheckBox.element),checked:a,onChange:c}),jsx("label",{htmlFor:`checkbox-${e.id}`,className:d(r.components.CheckBox.label),children:i})]})}function Z({component:e,processor:t,surfaceId:o,label:n,text:s,type:r="shortText"}){let i=m(),a=g(n,e,t,o),c=s?g(s,e,t,o):"",u=p=>{!s||!t||!("path"in s)||!s.path||t.setData(e,s.path,p.target.value,o??R.DEFAULT_SURFACE_ID);},l=r==="number"?"number":r==="date"?"date":"text",b=r==="longText";return jsxs("section",{className:d(i.components.TextField.container),children:[a&&jsx("label",{htmlFor:`textfield-${e.id}`,className:d(i.components.TextField.label),children:a}),b?jsx("textarea",{id:`textfield-${e.id}`,className:d(i.components.TextField.element),value:c,onChange:u,placeholder:"Please enter a value",rows:4}):jsx("input",{id:`textfield-${e.id}`,type:l,className:d(i.components.TextField.element),value:c,onChange:u,placeholder:"Please enter a value",autoComplete:"off"})]})}function G({component:e,processor:t,surfaceId:o,value:n,enableDate:s=true,enableTime:r=true}){let i=m(),a=g(n,e,t,o),c=l=>{!n||!t||!("path"in n)||!n.path||t.setData(e,n.path,l.target.value,o??R.DEFAULT_SURFACE_ID);},u="datetime-local";return s&&!r?u="date":!s&&r&&(u="time"),jsx("section",{className:d(i.components.DateTimeInput.container),children:jsx("input",{type:u,id:`datetime-${e.id}`,className:d(i.components.DateTimeInput.element),value:a,onChange:c})})}function Q({component:e,processor:t,surfaceId:o,selections:n,options:s=[]}){let r=m(),i=a=>{!n||!t||!("path"in n)||!n.path||t.setData(e,n.path,[a.target.value],o??R.DEFAULT_SURFACE_ID);};return jsxs("section",{className:d(r.components.MultipleChoice.container),children:[jsx("label",{htmlFor:`multichoice-${e.id}`,className:d(r.components.MultipleChoice.label),children:"Select an item"}),jsx("select",{id:`multichoice-${e.id}`,className:d(r.components.MultipleChoice.element),onChange:i,children:s?.map((a,c)=>{let u=g(a.label,e,t,o);return jsx("option",{value:a.value,children:u},c)})})]})}function X({component:e,processor:t,surfaceId:o,value:n,minValue:s,maxValue:r}){let i=m(),a=M(n,e,t,o),c=typeof s=="number"?s:s?M(s,e,t,o):0,u=typeof r=="number"?r:r?M(r,e,t,o):100,l=b=>{!n||!t||!("path"in n)||!n.path||t.setData(e,n.path,Number(b.target.value),o??R.DEFAULT_SURFACE_ID);};return jsxs("section",{className:d(i.components.Slider.container),children:[jsx("input",{type:"range",id:`slider-${e.id}`,className:d(i.components.Slider.element),value:a,min:c,max:u,onChange:l}),jsx("span",{className:d(i.components.Slider.label),children:a})]})}var P=class{constructor(){T(this,"registry",new Map);}register(t,o){if(!/^[a-zA-Z0-9]+$/.test(t))throw new Error(`[Registry] Invalid typeName '${t}'. Must be alphanumeric.`);this.registry.set(t,o);}get(t){return this.registry.get(t)}has(t){return this.registry.has(t)}unregister(t){return this.registry.delete(t)}getRegisteredTypes(){return Array.from(this.registry.keys())}},V=new P;function E({processor:e,surfaceId:t,childComponents:o,enableCustomElements:n=false,onAction:s}){return !o||!Array.isArray(o)?null:jsx(Fragment,{children:o.map(r=>jsx(v,{component:r,processor:e,surfaceId:t,enableCustomElements:n,onAction:s},r.id))})}function v({component:e,processor:t,surfaceId:o,enableCustomElements:n,onAction:s}){if(n){let r=V.get(e.type);if(r)return jsx(r,{component:e,processor:t,surfaceId:o,...e.properties},e.id)}switch(e.type){case "Text":{let r=e;return jsx(j,{component:r,processor:t,surfaceId:o,text:r.properties.text,usageHint:r.properties.usageHint},r.id)}case "Image":{let r=e;return jsx(B,{component:r,processor:t,surfaceId:o,url:r.properties.url,usageHint:r.properties.usageHint,fit:r.properties.fit},r.id)}case "Icon":{let r=e;return jsx(F,{component:r,processor:t,surfaceId:o,name:r.properties.name,container:r.properties.container,variant:r.properties.variant,size:r.properties.size},r.id)}case "Video":{let r=e;return jsx($,{component:r,processor:t,surfaceId:o,url:r.properties.url},r.id)}case "AudioPlayer":{let r=e;return jsx(L,{component:r,processor:t,surfaceId:o,url:r.properties.url,description:r.properties.description},r.id)}case "Button":{let r=e;return jsx(O,{component:r,processor:t,surfaceId:o,action:r.properties.action,onAction:s,children:r.properties.child&&jsx(v,{component:r.properties.child,processor:t,surfaceId:o,enableCustomElements:n,onAction:s})},r.id)}case "Row":{let r=e;return jsx(_,{component:r,processor:t,surfaceId:o,alignment:r.properties.alignment,distribution:r.properties.distribution,children:r.properties.children?.map(i=>jsx(v,{component:i,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},i.id))},r.id)}case "Column":{let r=e;return jsx(z,{component:r,processor:t,surfaceId:o,alignment:r.properties.alignment,distribution:r.properties.distribution,children:r.properties.children?.map(i=>jsx(v,{component:i,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},i.id))},r.id)}case "List":{let r=e;return jsx(K,{component:r,processor:t,surfaceId:o,direction:r.properties.direction,children:r.properties.children?.map(i=>jsx(v,{component:i,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},i.id))},r.id)}case "Card":{let r=e,i=r.properties.children??(r.properties.child?[r.properties.child]:[]);return jsx(H,{component:r,processor:t,surfaceId:o,children:i.map(a=>jsx(v,{component:a,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},a.id))},r.id)}case "Tabs":{let r=e,i=r.properties.tabItems?.map(c=>c.title)??[],a=r.properties.tabItems?.map(c=>jsx(v,{component:c.child,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},c.child.id));return jsx(W,{component:r,processor:t,surfaceId:o,titles:i,children:a},r.id)}case "Divider":{let r=e;return jsx(J,{component:r,processor:t,surfaceId:o,axis:r.properties.axis,thickness:r.properties.thickness,color:r.properties.color},r.id)}case "Modal":{let r=e;return jsx(Y,{component:r,processor:t,surfaceId:o,entryPoint:jsx(v,{component:r.properties.entryPointChild,processor:t,surfaceId:o,enableCustomElements:n,onAction:s}),content:jsx(v,{component:r.properties.contentChild,processor:t,surfaceId:o,enableCustomElements:n,onAction:s})},r.id)}case "CheckBox":{let r=e;return jsx(q,{component:r,processor:t,surfaceId:o,label:r.properties.label,value:r.properties.value},r.id)}case "TextField":{let r=e;return jsx(Z,{component:r,processor:t,surfaceId:o,label:r.properties.label,text:r.properties.text,type:r.properties.type,validationRegexp:r.properties.validationRegexp},r.id)}case "DateTimeInput":{let r=e;return jsx(G,{component:r,processor:t,surfaceId:o,value:r.properties.value,enableDate:r.properties.enableDate,enableTime:r.properties.enableTime},r.id)}case "MultipleChoice":{let r=e;return jsx(Q,{component:r,processor:t,surfaceId:o,selections:r.properties.selections,options:r.properties.options,maxAllowedSelections:r.properties.maxAllowedSelections},r.id)}case "Slider":{let r=e;return jsx(X,{component:r,processor:t,surfaceId:o,value:r.properties.value,minValue:r.properties.minValue,maxValue:r.properties.maxValue},r.id)}default:{if(n){let r=V.get(e.type);if(r)return jsx(r,{component:e,processor:t,surfaceId:o,...e.properties},e.id)}return jsxs("div",{className:"rounded border border-yellow-300 p-2 text-yellow-600",children:["Unknown component type: ",e.type]},e.id)}}}function Ve({surfaceId:e,surface:t,processor:o,enableCustomElements:n=false,onAction:s}){if(!t)return null;let r=()=>t.styles?.logoUrl?jsx("div",{className:"mb-4 flex justify-center",children:jsx("img",{src:t.styles.logoUrl,alt:"Logo",className:"w-1/2 max-w-[220px]"})}):null,i=()=>jsx(E,{surfaceId:e,processor:o,childComponents:t.componentTree?[t.componentTree]:null,enableCustomElements:n,onAction:s});return jsxs("div",{className:"a2ui-surface a2ui-root flex flex-col gap-8 p-10 pb-20",style:{"--p-50":t.styles?.primaryColor??"var(--primary)"},children:[r(),i()]})}function Ee({children:e,className:t}){let o=m();return jsx("div",{className:t,children:jsx(nt,{components:{p:({children:n})=>jsx("p",{className:o.markdown.p.join(" "),children:n}),h1:({children:n})=>jsx("h1",{className:o.markdown.h1.join(" "),children:n}),h2:({children:n})=>jsx("h2",{className:o.markdown.h2.join(" "),children:n}),h3:({children:n})=>jsx("h3",{className:o.markdown.h3.join(" "),children:n}),h4:({children:n})=>jsx("h4",{className:o.markdown.h4.join(" "),children:n}),h5:({children:n})=>jsx("h5",{className:o.markdown.h5.join(" "),children:n}),ul:({children:n})=>jsx("ul",{className:o.markdown.ul.join(" "),children:n}),ol:({children:n})=>jsx("ol",{className:o.markdown.ol.join(" "),children:n}),li:({children:n})=>jsx("li",{className:o.markdown.li.join(" "),children:n}),a:({children:n,href:s})=>jsx("a",{href:s,className:o.markdown.a.join(" "),children:n}),strong:({children:n})=>jsx("strong",{className:o.markdown.strong.join(" "),children:n}),em:({children:n})=>jsx("em",{className:o.markdown.em.join(" "),children:n})},children:e})})}function Ue(e){return jsx(nt,{children:e})}var je=createContext({processor:null,surfaceId:null});function Ut({processor:e,surfaceId:t="@default",children:o}){return jsx(je.Provider,{value:{processor:e,surfaceId:t},children:o})}function jt(){return useContext(je)}
|
|
2
|
+
export{E as A2UIRoot,Oe as A2UI_EVENT_NAME,R as A2uiMessageProcessor,L as Audio,O as Button,H as Card,q as Checkbox,z as Column,P as ComponentRegistry,v as ComponentRenderer,Le as Data,G as DateTimeInput,J as Divider,_e as Events,F as Icon,B as Image,K as List,Ee as Markdown,Y as Modal,Q as MultipleChoice,je as ProcessorContext,Ut as ProcessorProvider,E as Root,_ as Row,X as Slider,Ye as Styles,Ve as Surface,W as Tabs,j as Text,Z as TextField,Te as ThemeContext,dt as ThemeProvider,at as Types,st as UI,$ as Video,ze as appendToAll,Ke as classesToString,d as cn,V as componentRegistry,$e as createMessageProcessor,Je as createTheme,k as defaultTheme,M as extractNumberValue,g as extractStringValue,N as isAnyComponentNode,Ne as isBooleanValue,re as isComponentArrayReference,ve as isNumberValue,f as isObject,te as isPath,oe as isResolvedAudioPlayer,ne as isResolvedButton,se as isResolvedCard,ie as isResolvedCheckbox,ae as isResolvedColumn,le as isResolvedDateTimeInput,ce as isResolvedDivider,ue as isResolvedIcon,de as isResolvedImage,pe as isResolvedList,me as isResolvedModal,fe as isResolvedMultipleChoice,he as isResolvedRow,ye as isResolvedSlider,Ie as isResolvedTabItem,ge as isResolvedTabs,xe as isResolvedText,be as isResolvedTextField,Re as isResolvedVideo,I as isStringValue,Fe as isValueMap,A as merge,Ue as renderMarkdown,He as stylesToCSS,jt as useProcessor,m as useTheme};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';function x(...u){let e={};for(let o of u)if(o)for(let[t,n]of Object.entries(o)){let r=t.split("-").slice(0,-1).join("-")+"-",l=Object.keys(e).filter(a=>a.startsWith(r));for(let a of l)delete e[a];e[t]=n;}return e}function p(u,e,...o){let t=structuredClone(u);for(let n of o)for(let r of Object.keys(n)){let l=r.split("-").slice(0,-1).join("-")+"-";for(let[a,d]of Object.entries(t)){if(e.includes(a))continue;let c=false;for(let s=0;s<d.length;s++)d[s]?.startsWith(l)&&(c=true,d[s]=r);c||d.push(r);}}return t}function g(u){return Object.entries(u).filter(([,e])=>e).map(([e])=>e).join(" ")}function h(u){let e={};for(let[o,t]of Object.entries(u)){let n=o.replace(/-([a-z])/g,(r,l)=>l.toUpperCase());e[n]=t;}return e}function i(){return {}}var f={components:{AudioPlayer:i(),Button:{"a2ui-btn":true,"inline-flex":true,"items-center":true,"justify-center":true,"whitespace-nowrap":true,"rounded-xl":true,"text-xs":true,"font-medium":true,"transition-all":true,"duration-300":true,"disabled:pointer-events-none":true,"disabled:opacity-50":true,"active:scale-95":true,"bg-primary":true,"text-primary-foreground":true,"hover:bg-primary/90":true,"shadow-sm":true,"h-9":true,"px-4":true,"py-2":true},Card:{"a2ui-card":true,group:true,relative:true,"rounded-2xl":true,border:true,"border-border/50":true,"bg-card":true,"text-card-foreground":true,"shadow-sm":true,"transition-all":true,"duration-300":true,"hover:shadow-md":true,"hover:border-primary/40":true,"hover:-translate-y-1":true,"p-5":true,"overflow-hidden":true},Column:{"a2ui-column":true,flex:true,"flex-col":true,"space-y-4":true},CheckBox:{container:{"a2ui-checkbox":true,flex:true,"items-center":true,"gap-2":true},element:{"w-4":true,"h-4":true},label:{"text-sm":true,"font-medium":true}},DateTimeInput:{container:{"a2ui-datetime":true,flex:true,"flex-col":true,"gap-1":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"transition-colors":true},label:{"text-sm":true,"font-medium":true}},Divider:{"a2ui-divider":true,"border-t":true,"border-border/50":true,"my-8":true},Image:{all:{"a2ui-image":true,"max-w-full":true,"h-auto":true},icon:{"w-6":true,"h-6":true},avatar:{"w-10":true,"h-10":true,"rounded-full":true},smallFeature:{"w-24":true,"h-24":true},mediumFeature:{"w-48":true,"h-48":true},largeFeature:{"w-full":true,"max-h-96":true},header:{"w-full":true,"h-32":true,"object-cover":true}},Icon:{"a2ui-icon":true,"w-5":true,"h-5":true},List:{"a2ui-list":true,grid:true,"grid-cols-1":true,"md:grid-cols-2":true,"gap-4":true,"w-full":true},Modal:{backdrop:{fixed:true,"inset-0":true,"bg-black/50":true,flex:true,"items-center":true,"justify-center":true,"z-50":true},element:{"bg-card":true,"rounded-lg":true,"p-6":true,"max-w-lg":true,"w-full":true,"mx-4":true,"shadow-xl":true,border:true,"border-border":true,"border-white/60":true}},MultipleChoice:{container:{"a2ui-multichoice":true,flex:true,"flex-col":true,"gap-2":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"w-full":true},label:{"text-sm":true,"font-medium":true}},Row:{"a2ui-row":true,flex:true,"flex-row":true,"items-center":true,"justify-between":true,"gap-6":true,"w-full":true},Slider:{container:{"a2ui-slider":true,flex:true,"flex-col":true,"gap-1":true},element:{"w-full":true},label:{"text-sm":true,"font-medium":true}},Tabs:{container:{"a2ui-tabs":true,flex:true,"flex-col":true,"space-y-4":true},element:{flex:true,"border-b":true,"border-border":true},controls:{all:{"px-4":true,"py-2":true,"text-sm":true,"font-medium":true,"cursor-pointer":true,"transition-colors":true,"rounded-t-md":true},selected:{"border-b-2":true,"border-primary":true,"text-primary":true,"-mb-px":true}}},Text:{all:{"a2ui-text":true},h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true,"mb-4":true},h2:{"text-xl":true,"font-semibold":true,"mb-2":true},h3:{"text-lg":true,"font-medium":true,"mb-1":true},h4:{"text-base":true,"font-medium":true},h5:{"text-sm":true,"font-medium":true},h6:{"text-xs":true,"font-medium":true},body:{"text-base":true,"leading-relaxed":true,"text-foreground/90":true},caption:{"text-sm":true,"text-muted-foreground":true,"leading-relaxed":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},TextField:{container:{"a2ui-textfield":true,flex:true,"flex-col":true,"gap-1.5":true},element:{flex:true,"h-10":true,"w-full":true,"rounded-md":true,border:true,"border-input":true,"bg-background":true,"px-3":true,"py-2":true,"text-sm":true,"ring-offset-background":true,"transition-colors":true,"placeholder:text-muted-foreground":true,"focus-visible:outline-none":true,"focus-visible:ring-2":true,"focus-visible:ring-ring":true,"focus-visible:ring-offset-2":true,"disabled:cursor-not-allowed":true,"disabled:opacity-50":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},Video:{"a2ui-video":true,"w-full":true,"rounded-2xl":true,border:true,"border-border/50":true}},elements:{a:{"text-primary":true,"underline-offset-4":true,"hover:underline":true,"transition-colors":true},audio:i(),body:{"text-base":true},button:i(),h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true},h2:{"text-xl":true,"font-semibold":true},h3:{"text-lg":true,"font-bold":true},h4:{"text-base":true,"font-semibold":true},h5:{"text-base":true,"font-medium":true},iframe:i(),input:i(),p:{"text-base":true,"leading-relaxed":true},pre:{"font-mono":true,"text-sm":true,"bg-muted":true,"p-4":true,"rounded-md":true,"overflow-x-auto":true,border:true,"border-border":true},textarea:i(),video:i()},markdown:{p:["text-[15px]","leading-[1.7]","mb-3"],h1:["text-xl","font-bold","tracking-tight","mt-6","mb-4"],h2:["text-[17px]","font-semibold","mt-5","mb-3"],h3:["text-[15px]","font-semibold","mt-4","mb-2"],h4:["text-[15px]","font-medium","mt-3","mb-2"],h5:["text-sm","font-medium","mt-3","mb-2"],ul:["list-disc","list-outside","ml-5","mb-3","space-y-1.5"],ol:["list-decimal","list-outside","ml-5","mb-3","space-y-1.5"],li:["text-[15px]","leading-[1.7]","pl-1"],a:["text-primary","underline-offset-2","hover:underline","font-medium"],strong:["font-semibold"],em:["not-italic","opacity-80"],code:["font-mono","text-[13px]","bg-muted/60","px-1.5","py-0.5","rounded","border","border-border/50"],blockquote:["border-l-3","border-primary/40","pl-4","py-2","text-muted-foreground","bg-muted/30","rounded-r","mb-3","text-[14px]"]}};function m(u,e){let o={...u};for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=o[t],r=e[t];typeof n=="object"&&n!==null&&typeof r=="object"&&r!==null&&!Array.isArray(n)&&!Array.isArray(r)?o[t]=m(n,r):o[t]=r;}return o}function w(u){return m(f,u)}exports.appendToAll=p;exports.classesToString=g;exports.createTheme=w;exports.defaultTheme=f;exports.merge=x;exports.stylesToCSS=h;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function x(...u){let e={};for(let o of u)if(o)for(let[t,n]of Object.entries(o)){let r=t.split("-").slice(0,-1).join("-")+"-",l=Object.keys(e).filter(a=>a.startsWith(r));for(let a of l)delete e[a];e[t]=n;}return e}function p(u,e,...o){let t=structuredClone(u);for(let n of o)for(let r of Object.keys(n)){let l=r.split("-").slice(0,-1).join("-")+"-";for(let[a,d]of Object.entries(t)){if(e.includes(a))continue;let c=false;for(let s=0;s<d.length;s++)d[s]?.startsWith(l)&&(c=true,d[s]=r);c||d.push(r);}}return t}function g(u){return Object.entries(u).filter(([,e])=>e).map(([e])=>e).join(" ")}function h(u){let e={};for(let[o,t]of Object.entries(u)){let n=o.replace(/-([a-z])/g,(r,l)=>l.toUpperCase());e[n]=t;}return e}function i(){return {}}var f={components:{AudioPlayer:i(),Button:{"a2ui-btn":true,"inline-flex":true,"items-center":true,"justify-center":true,"whitespace-nowrap":true,"rounded-xl":true,"text-xs":true,"font-medium":true,"transition-all":true,"duration-300":true,"disabled:pointer-events-none":true,"disabled:opacity-50":true,"active:scale-95":true,"bg-primary":true,"text-primary-foreground":true,"hover:bg-primary/90":true,"shadow-sm":true,"h-9":true,"px-4":true,"py-2":true},Card:{"a2ui-card":true,group:true,relative:true,"rounded-2xl":true,border:true,"border-border/50":true,"bg-card":true,"text-card-foreground":true,"shadow-sm":true,"transition-all":true,"duration-300":true,"hover:shadow-md":true,"hover:border-primary/40":true,"hover:-translate-y-1":true,"p-5":true,"overflow-hidden":true},Column:{"a2ui-column":true,flex:true,"flex-col":true,"space-y-4":true},CheckBox:{container:{"a2ui-checkbox":true,flex:true,"items-center":true,"gap-2":true},element:{"w-4":true,"h-4":true},label:{"text-sm":true,"font-medium":true}},DateTimeInput:{container:{"a2ui-datetime":true,flex:true,"flex-col":true,"gap-1":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"transition-colors":true},label:{"text-sm":true,"font-medium":true}},Divider:{"a2ui-divider":true,"border-t":true,"border-border/50":true,"my-8":true},Image:{all:{"a2ui-image":true,"max-w-full":true,"h-auto":true},icon:{"w-6":true,"h-6":true},avatar:{"w-10":true,"h-10":true,"rounded-full":true},smallFeature:{"w-24":true,"h-24":true},mediumFeature:{"w-48":true,"h-48":true},largeFeature:{"w-full":true,"max-h-96":true},header:{"w-full":true,"h-32":true,"object-cover":true}},Icon:{"a2ui-icon":true,"w-5":true,"h-5":true},List:{"a2ui-list":true,grid:true,"grid-cols-1":true,"md:grid-cols-2":true,"gap-4":true,"w-full":true},Modal:{backdrop:{fixed:true,"inset-0":true,"bg-black/50":true,flex:true,"items-center":true,"justify-center":true,"z-50":true},element:{"bg-card":true,"rounded-lg":true,"p-6":true,"max-w-lg":true,"w-full":true,"mx-4":true,"shadow-xl":true,border:true,"border-border":true,"border-white/60":true}},MultipleChoice:{container:{"a2ui-multichoice":true,flex:true,"flex-col":true,"gap-2":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"w-full":true},label:{"text-sm":true,"font-medium":true}},Row:{"a2ui-row":true,flex:true,"flex-row":true,"items-center":true,"justify-between":true,"gap-6":true,"w-full":true},Slider:{container:{"a2ui-slider":true,flex:true,"flex-col":true,"gap-1":true},element:{"w-full":true},label:{"text-sm":true,"font-medium":true}},Tabs:{container:{"a2ui-tabs":true,flex:true,"flex-col":true,"space-y-4":true},element:{flex:true,"border-b":true,"border-border":true},controls:{all:{"px-4":true,"py-2":true,"text-sm":true,"font-medium":true,"cursor-pointer":true,"transition-colors":true,"rounded-t-md":true},selected:{"border-b-2":true,"border-primary":true,"text-primary":true,"-mb-px":true}}},Text:{all:{"a2ui-text":true},h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true,"mb-4":true},h2:{"text-xl":true,"font-semibold":true,"mb-2":true},h3:{"text-lg":true,"font-medium":true,"mb-1":true},h4:{"text-base":true,"font-medium":true},h5:{"text-sm":true,"font-medium":true},h6:{"text-xs":true,"font-medium":true},body:{"text-base":true,"leading-relaxed":true,"text-foreground/90":true},caption:{"text-sm":true,"text-muted-foreground":true,"leading-relaxed":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},TextField:{container:{"a2ui-textfield":true,flex:true,"flex-col":true,"gap-1.5":true},element:{flex:true,"h-10":true,"w-full":true,"rounded-md":true,border:true,"border-input":true,"bg-background":true,"px-3":true,"py-2":true,"text-sm":true,"ring-offset-background":true,"transition-colors":true,"placeholder:text-muted-foreground":true,"focus-visible:outline-none":true,"focus-visible:ring-2":true,"focus-visible:ring-ring":true,"focus-visible:ring-offset-2":true,"disabled:cursor-not-allowed":true,"disabled:opacity-50":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},Video:{"a2ui-video":true,"w-full":true,"rounded-2xl":true,border:true,"border-border/50":true}},elements:{a:{"text-primary":true,"underline-offset-4":true,"hover:underline":true,"transition-colors":true},audio:i(),body:{"text-base":true},button:i(),h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true},h2:{"text-xl":true,"font-semibold":true},h3:{"text-lg":true,"font-bold":true},h4:{"text-base":true,"font-semibold":true},h5:{"text-base":true,"font-medium":true},iframe:i(),input:i(),p:{"text-base":true,"leading-relaxed":true},pre:{"font-mono":true,"text-sm":true,"bg-muted":true,"p-4":true,"rounded-md":true,"overflow-x-auto":true,border:true,"border-border":true},textarea:i(),video:i()},markdown:{p:["text-[15px]","leading-[1.7]","mb-3"],h1:["text-xl","font-bold","tracking-tight","mt-6","mb-4"],h2:["text-[17px]","font-semibold","mt-5","mb-3"],h3:["text-[15px]","font-semibold","mt-4","mb-2"],h4:["text-[15px]","font-medium","mt-3","mb-2"],h5:["text-sm","font-medium","mt-3","mb-2"],ul:["list-disc","list-outside","ml-5","mb-3","space-y-1.5"],ol:["list-decimal","list-outside","ml-5","mb-3","space-y-1.5"],li:["text-[15px]","leading-[1.7]","pl-1"],a:["text-primary","underline-offset-2","hover:underline","font-medium"],strong:["font-semibold"],em:["not-italic","opacity-80"],code:["font-mono","text-[13px]","bg-muted/60","px-1.5","py-0.5","rounded","border","border-border/50"],blockquote:["border-l-3","border-primary/40","pl-4","py-2","text-muted-foreground","bg-muted/30","rounded-r","mb-3","text-[14px]"]}};function m(u,e){let o={...u};for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=o[t],r=e[t];typeof n=="object"&&n!==null&&typeof r=="object"&&r!==null&&!Array.isArray(n)&&!Array.isArray(r)?o[t]=m(n,r):o[t]=r;}return o}function w(u){return m(f,u)}export{p as appendToAll,g as classesToString,w as createTheme,f as defaultTheme,x as merge,h as stylesToCSS};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var Ue=require('react-markdown'),react=require('react'),jsxRuntime=require('react/jsx-runtime'),Me=require('lucide-react');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Ue__default=/*#__PURE__*/_interopDefault(Ue);var Me__namespace=/*#__PURE__*/_interopNamespace(Me);var Fe=Object.defineProperty;var Be=(e,t,o)=>t in e?Fe(e,t,{enumerable:true,configurable:true,writable:true,value:o}):e[t]=o;var N=(e,t,o)=>Be(e,typeof t!="symbol"?t+"":t,o);function A(){return {}}var ae={components:{AudioPlayer:A(),Button:{"a2ui-btn":true,"inline-flex":true,"items-center":true,"justify-center":true,"whitespace-nowrap":true,"rounded-xl":true,"text-xs":true,"font-medium":true,"transition-all":true,"duration-300":true,"disabled:pointer-events-none":true,"disabled:opacity-50":true,"active:scale-95":true,"bg-primary":true,"text-primary-foreground":true,"hover:bg-primary/90":true,"shadow-sm":true,"h-9":true,"px-4":true,"py-2":true},Card:{"a2ui-card":true,group:true,relative:true,"rounded-2xl":true,border:true,"border-border/50":true,"bg-card":true,"text-card-foreground":true,"shadow-sm":true,"transition-all":true,"duration-300":true,"hover:shadow-md":true,"hover:border-primary/40":true,"hover:-translate-y-1":true,"p-5":true,"overflow-hidden":true},Column:{"a2ui-column":true,flex:true,"flex-col":true,"space-y-4":true},CheckBox:{container:{"a2ui-checkbox":true,flex:true,"items-center":true,"gap-2":true},element:{"w-4":true,"h-4":true},label:{"text-sm":true,"font-medium":true}},DateTimeInput:{container:{"a2ui-datetime":true,flex:true,"flex-col":true,"gap-1":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"transition-colors":true},label:{"text-sm":true,"font-medium":true}},Divider:{"a2ui-divider":true,"border-t":true,"border-border/50":true,"my-8":true},Image:{all:{"a2ui-image":true,"max-w-full":true,"h-auto":true},icon:{"w-6":true,"h-6":true},avatar:{"w-10":true,"h-10":true,"rounded-full":true},smallFeature:{"w-24":true,"h-24":true},mediumFeature:{"w-48":true,"h-48":true},largeFeature:{"w-full":true,"max-h-96":true},header:{"w-full":true,"h-32":true,"object-cover":true}},Icon:{"a2ui-icon":true,"w-5":true,"h-5":true},List:{"a2ui-list":true,grid:true,"grid-cols-1":true,"md:grid-cols-2":true,"gap-4":true,"w-full":true},Modal:{backdrop:{fixed:true,"inset-0":true,"bg-black/50":true,flex:true,"items-center":true,"justify-center":true,"z-50":true},element:{"bg-card":true,"rounded-lg":true,"p-6":true,"max-w-lg":true,"w-full":true,"mx-4":true,"shadow-xl":true,border:true,"border-border":true,"border-white/60":true}},MultipleChoice:{container:{"a2ui-multichoice":true,flex:true,"flex-col":true,"gap-2":true},element:{"px-3":true,"py-2":true,border:true,"border-input":true,"rounded-md":true,"bg-background":true,"w-full":true},label:{"text-sm":true,"font-medium":true}},Row:{"a2ui-row":true,flex:true,"flex-row":true,"items-center":true,"justify-between":true,"gap-6":true,"w-full":true},Slider:{container:{"a2ui-slider":true,flex:true,"flex-col":true,"gap-1":true},element:{"w-full":true},label:{"text-sm":true,"font-medium":true}},Tabs:{container:{"a2ui-tabs":true,flex:true,"flex-col":true,"space-y-4":true},element:{flex:true,"border-b":true,"border-border":true},controls:{all:{"px-4":true,"py-2":true,"text-sm":true,"font-medium":true,"cursor-pointer":true,"transition-colors":true,"rounded-t-md":true},selected:{"border-b-2":true,"border-primary":true,"text-primary":true,"-mb-px":true}}},Text:{all:{"a2ui-text":true},h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true,"mb-4":true},h2:{"text-xl":true,"font-semibold":true,"mb-2":true},h3:{"text-lg":true,"font-medium":true,"mb-1":true},h4:{"text-base":true,"font-medium":true},h5:{"text-sm":true,"font-medium":true},h6:{"text-xs":true,"font-medium":true},body:{"text-base":true,"leading-relaxed":true,"text-foreground/90":true},caption:{"text-sm":true,"text-muted-foreground":true,"leading-relaxed":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},TextField:{container:{"a2ui-textfield":true,flex:true,"flex-col":true,"gap-1.5":true},element:{flex:true,"h-10":true,"w-full":true,"rounded-md":true,border:true,"border-input":true,"bg-background":true,"px-3":true,"py-2":true,"text-sm":true,"ring-offset-background":true,"transition-colors":true,"placeholder:text-muted-foreground":true,"focus-visible:outline-none":true,"focus-visible:ring-2":true,"focus-visible:ring-ring":true,"focus-visible:ring-offset-2":true,"disabled:cursor-not-allowed":true,"disabled:opacity-50":true},label:{"text-sm":true,"font-medium":true,"leading-none":true}},Video:{"a2ui-video":true,"w-full":true,"rounded-2xl":true,border:true,"border-border/50":true}},elements:{a:{"text-primary":true,"underline-offset-4":true,"hover:underline":true,"transition-colors":true},audio:A(),body:{"text-base":true},button:A(),h1:{"text-3xl":true,"font-bold":true,"tracking-tight":true},h2:{"text-xl":true,"font-semibold":true},h3:{"text-lg":true,"font-bold":true},h4:{"text-base":true,"font-semibold":true},h5:{"text-base":true,"font-medium":true},iframe:A(),input:A(),p:{"text-base":true,"leading-relaxed":true},pre:{"font-mono":true,"text-sm":true,"bg-muted":true,"p-4":true,"rounded-md":true,"overflow-x-auto":true,border:true,"border-border":true},textarea:A(),video:A()},markdown:{p:["text-[15px]","leading-[1.7]","mb-3"],h1:["text-xl","font-bold","tracking-tight","mt-6","mb-4"],h2:["text-[17px]","font-semibold","mt-5","mb-3"],h3:["text-[15px]","font-semibold","mt-4","mb-2"],h4:["text-[15px]","font-medium","mt-3","mb-2"],h5:["text-sm","font-medium","mt-3","mb-2"],ul:["list-disc","list-outside","ml-5","mb-3","space-y-1.5"],ol:["list-decimal","list-outside","ml-5","mb-3","space-y-1.5"],li:["text-[15px]","leading-[1.7]","pl-1"],a:["text-primary","underline-offset-2","hover:underline","font-medium"],strong:["font-semibold"],em:["not-italic","opacity-80"],code:["font-mono","text-[13px]","bg-muted/60","px-1.5","py-0.5","rounded","border","border-border/50"],blockquote:["border-l-3","border-primary/40","pl-4","py-2","text-muted-foreground","bg-muted/30","rounded-r","mb-3","text-[14px]"]}};var _e=react.createContext(ae);function m(){return react.useContext(_e)}function M(...e){let t={};for(let o of e)if(o)for(let[n,s]of Object.entries(o)){let r=n.split("-").slice(0,-1).join("-")+"-",i=Object.keys(t).filter(a=>a.startsWith(r));for(let a of i)delete t[a];t[n]=s;}return t}function le(e,t){return e==="path"&&typeof t=="string"}function f(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ce(e){return f(e)?"explicitList"in e||"template"in e:false}function I(e){return f(e)&&("path"in e||"literal"in e&&typeof e.literal=="string"||"literalString"in e)}function ze(e){return f(e)&&("path"in e||"literal"in e&&typeof e.literal=="number"||"literalNumber"in e)}function Ke(e){return f(e)&&("path"in e||"literal"in e&&typeof e.literal=="boolean"||"literalBoolean"in e)}function w(e){return f(e)?"id"in e&&"type"in e&&"properties"in e:false}function ue(e){return f(e)&&"url"in e&&I(e.url)}function de(e){return f(e)&&"child"in e&&w(e.child)&&"action"in e}function pe(e){return f(e)?"child"in e?w(e.child):"children"in e?Array.isArray(e.children)&&e.children.every(w):false:false}function me(e){return f(e)&&"label"in e&&I(e.label)&&"value"in e&&Ke(e.value)}function fe(e){return f(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(w)}function he(e){return f(e)&&"value"in e&&I(e.value)}function ye(e){return f(e)}function ge(e){return f(e)&&"url"in e&&I(e.url)}function xe(e){return f(e)&&"name"in e&&I(e.name)}function be(e){return f(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(w)}function Re(e){return f(e)&&"entryPointChild"in e&&w(e.entryPointChild)&&"contentChild"in e&&w(e.contentChild)}function Ce(e){return f(e)&&"selections"in e}function ve(e){return f(e)&&"children"in e&&Array.isArray(e.children)&&e.children.every(w)}function Ne(e){return f(e)&&"value"in e&&ze(e.value)}function He(e){return f(e)&&"title"in e&&I(e.title)&&"child"in e&&w(e.child)}function we(e){return f(e)&&"tabItems"in e&&Array.isArray(e.tabItems)&&e.tabItems.every(He)}function Ie(e){return f(e)&&"text"in e&&I(e.text)}function Ae(e){return f(e)&&"label"in e&&I(e.label)}function Te(e){return f(e)&&"url"in e&&I(e.url)}var S=class S{constructor(t={}){N(this,"mapCtor",Map);N(this,"arrayCtor",Array);N(this,"setCtor",Set);N(this,"objCtor",Object);N(this,"surfaces");this.arrayCtor=t.arrayCtor??Array,this.mapCtor=t.mapCtor??Map,this.setCtor=t.setCtor??Set,this.objCtor=t.objCtor??Object,this.surfaces=new this.mapCtor;}getSurfaces(){return this.surfaces}clearSurfaces(){this.surfaces.clear();}processMessages(t){for(let o of t)o.beginRendering&&this.handleBeginRendering(o.beginRendering,o.beginRendering.surfaceId),o.surfaceUpdate&&this.handleSurfaceUpdate(o.surfaceUpdate,o.surfaceUpdate.surfaceId),o.dataModelUpdate&&this.handleDataModelUpdate(o.dataModelUpdate,o.dataModelUpdate.surfaceId),o.deleteSurface&&this.handleDeleteSurface(o.deleteSurface);}getData(t,o,n=S.DEFAULT_SURFACE_ID){let s=this.getOrCreateSurface(n);if(!s)return null;let r;return o==="."||o===""?r=t.dataContextPath??"/":r=this.resolvePath(o,t.dataContextPath),this.getDataByPath(s.dataModel,r)}setData(t,o,n,s=S.DEFAULT_SURFACE_ID){if(!t){console.warn("No component node set");return}let r=this.getOrCreateSurface(s);if(!r)return;let i;o==="."||o===""?i=t.dataContextPath??"/":i=this.resolvePath(o,t.dataContextPath),this.setDataByPath(r.dataModel,i,n);}resolvePath(t,o){return t.startsWith("/")?t:o&&o!=="/"?o.endsWith("/")?`${o}${t}`:`${o}/${t}`:`/${t}`}parseIfJsonString(t){if(typeof t!="string")return t;let o=t.trim();if(o.startsWith("{")&&o.endsWith("}")||o.startsWith("[")&&o.endsWith("]"))try{return JSON.parse(t)}catch{return console.warn(`Failed to parse potential JSON string: "${t.substring(0,50)}..."`),t}return t}convertKeyValueArrayToMap(t){let o=new this.mapCtor;for(let n of t){if(!f(n)||!("key"in n))continue;let s=n.key,r=this.findValueKey(n);if(!r)continue;let i=n[r];r==="valueMap"&&Array.isArray(i)?i=this.convertKeyValueArrayToMap(i):typeof i=="string"&&(i=this.parseIfJsonString(i)),this.setDataByPath(o,s,i);}return o}setDataByPath(t,o,n){if(Array.isArray(n)&&(n.length===0||f(n[0])&&"key"in n[0]))if(n.length===1&&f(n[0])&&n[0].key==="."){let a=n[0],u=this.findValueKey(a);u?(n=a[u],u==="valueMap"&&Array.isArray(n)?n=this.convertKeyValueArrayToMap(n):typeof n=="string"&&(n=this.parseIfJsonString(n))):n=this.convertKeyValueArrayToMap(n);}else n=this.convertKeyValueArrayToMap(n);let s=this.normalizePath(o).split("/").filter(a=>a);if(s.length===0){if(n instanceof Map||f(n)){!(n instanceof Map)&&f(n)&&(n=new this.mapCtor(Object.entries(n))),t.clear();for(let[a,u]of n.entries())t.set(a,u);}else console.error("Cannot set root of DataModel to a non-Map value.");return}let r=t;for(let a=0;a<s.length-1;a++){let u=s[a],p;r instanceof Map?p=r.get(u):Array.isArray(r)&&/^\d+$/.test(u)&&(p=r[parseInt(u,10)]),(p===void 0||typeof p!="object"||p===null)&&(p=new this.mapCtor,r instanceof this.mapCtor?r.set(u,p):Array.isArray(r)&&(r[parseInt(u,10)]=p)),r=p;}let i=s[s.length-1];r instanceof this.mapCtor?r.set(i,n):Array.isArray(r)&&/^\d+$/.test(i)&&(r[parseInt(i,10)]=n);}normalizePath(t){return "/"+t.replace(/\[(\d+)\]/g,".$1").split(".").filter(s=>s.length>0).join("/")}getDataByPath(t,o){let n=this.normalizePath(o).split("/").filter(r=>r),s=t;for(let r of n){if(s==null)return null;if(s instanceof Map)s=s.get(r);else if(Array.isArray(s)&&/^\d+$/.test(r))s=s[parseInt(r,10)];else if(f(s))s=s[r];else return null}return s??null}getOrCreateSurface(t){let o=this.surfaces.get(t);return o||(o={rootComponentId:null,componentTree:null,dataModel:new this.mapCtor,components:new this.mapCtor,styles:{}},this.surfaces.set(t,o)),o}handleBeginRendering(t,o){let n=this.getOrCreateSurface(o);n.rootComponentId=t.root,n.styles=t.styles??{},this.rebuildComponentTree(n);}handleSurfaceUpdate(t,o){let n=this.getOrCreateSurface(o);for(let s of t.components)n.components.set(s.id,s);this.rebuildComponentTree(n);}handleDataModelUpdate(t,o){let n=this.getOrCreateSurface(o),s=t.path??"/";this.setDataByPath(n.dataModel,s,t.contents),this.rebuildComponentTree(n);}handleDeleteSurface(t){this.surfaces.delete(t.surfaceId);}rebuildComponentTree(t){if(!t.rootComponentId){t.componentTree=null;return}let o=new this.setCtor;t.componentTree=this.buildNodeRecursive(t.rootComponentId,t,o,"/","");}findValueKey(t){return Object.keys(t).find(o=>o.startsWith("value"))}buildNodeRecursive(t,o,n,s,r=""){let i=`${t}${r}`,{components:a}=o;if(!a.has(t))return null;if(n.has(i))throw new Error(`Circular dependency for component "${i}".`);n.add(i);let u=a.get(t),p=u.component??{},l=Object.keys(p)[0]??"Unknown",b=p[l],d={};if(f(b))for(let[T,k]of Object.entries(b))d[T]=this.resolvePropertyValue(k,o,n,s,r);n.delete(i);let y={id:i,dataContextPath:s,weight:u.weight??"initial"};switch(l){case "Text":if(!Ie(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Text",properties:d};case "Image":if(!ge(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Image",properties:d};case "Icon":if(!xe(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Icon",properties:d};case "Video":if(!Te(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Video",properties:d};case "AudioPlayer":if(!ue(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"AudioPlayer",properties:d};case "Row":if(!ve(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Row",properties:d};case "Column":if(!fe(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Column",properties:d};case "List":if(!be(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"List",properties:d};case "Card":if(!pe(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Card",properties:d};case "Tabs":if(!we(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Tabs",properties:d};case "Divider":if(!ye(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Divider",properties:d};case "Modal":if(!Re(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Modal",properties:d};case "Button":if(!de(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Button",properties:d};case "CheckBox":if(!me(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"CheckBox",properties:d};case "TextField":if(!Ae(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"TextField",properties:d};case "DateTimeInput":if(!he(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"DateTimeInput",properties:d};case "MultipleChoice":if(!Ce(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"MultipleChoice",properties:d};case "Slider":if(!Ne(d))throw new Error(`Invalid data; expected ${l}`);return {...y,type:"Slider",properties:d};default:return {...y,type:l,properties:d}}}resolvePropertyValue(t,o,n,s,r=""){if(typeof t=="string"&&o.components.has(t))return this.buildNodeRecursive(t,o,n,s,r);if(ce(t)){if(t.explicitList)return t.explicitList.map(i=>this.buildNodeRecursive(i,o,n,s,r));if(t.template){let i=this.resolvePath(t.template.dataBinding,s),a=this.getDataByPath(o.dataModel,i),u=t.template;return Array.isArray(a)?a.map((p,l)=>{let y=`:${[...s.split("/").filter(k=>/^\d+$/.test(k)),l].join(":")}`,T=`${i}/${l}`;return this.buildNodeRecursive(u.componentId,o,n,T,y)}):a instanceof Map?Array.from(a.keys(),p=>{let l=`:${p}`,b=`${i}/${p}`;return this.buildNodeRecursive(u.componentId,o,n,b,l)}):[]}}if(Array.isArray(t))return t.map(i=>this.resolvePropertyValue(i,o,n,s,r));if(f(t)){let i={};for(let[a,u]of Object.entries(t)){let p=u;if(le(a,u)&&s!=="/"){p=u.replace(/^\.?\/item/,"").replace(/^\.?\/text/,"").replace(/^\.?\/label/,"").replace(/^\.?\//,""),i[a]=p;continue}i[a]=this.resolvePropertyValue(p,o,n,s,r);}return i}return t}};N(S,"DEFAULT_SURFACE_ID","@default");var R=S;function g(e,t,o,n){if(e!==null&&typeof e=="object"){if("literalString"in e)return e.literalString??"";if("literal"in e&&e.literal!==void 0)return e.literal??"";if(e&&"path"in e&&e.path){if(!o||!t)return "(no model)";let s=o.getData(t,e.path,n??R.DEFAULT_SURFACE_ID);return s===null||typeof s!="string"?"":s}}return ""}function D(e,t,o,n){if(e!==null&&typeof e=="object"){if("literalNumber"in e)return e.literalNumber??0;if("literal"in e&&e.literal!==void 0)return e.literal??0;if(e&&"path"in e&&e.path){if(!o||!t)return -1;let s=o.getData(t,e.path,n??R.DEFAULT_SURFACE_ID);return typeof s=="string"&&(s=Number.parseInt(s,10),Number.isNaN(s)&&(s=null)),s===null||typeof s!="number"?-1:s}}return 0}function c(...e){let t=[];for(let o of e)if(o){if(typeof o=="string")t.push(o);else if(typeof o=="object")for(let[n,s]of Object.entries(o))s&&t.push(n);}return t.join(" ")}function j({component:e,processor:t,surfaceId:o,text:n,usageHint:s="body",markdown:r=true}){let i=m(),a=g(n,e,t,o);if(!a)return jsxRuntime.jsx("span",{className:"text-gray-400",children:"(empty)"});let u=M(i.components.Text.all,s?i.components.Text[s]:{});if(r){let p=()=>{switch(s){case "h1":return `# ${a}`;case "h2":return `## ${a}`;case "h3":return `### ${a}`;case "h4":return `#### ${a}`;case "h5":return `##### ${a}`;case "caption":return `*${a}*`;default:return a}};return jsxRuntime.jsx("section",{className:c(u),children:jsxRuntime.jsx(Ue__default.default,{components:{p:({children:l})=>jsxRuntime.jsx("p",{className:i.markdown.p.join(" "),children:l}),h1:({children:l})=>jsxRuntime.jsx("h1",{className:i.markdown.h1.join(" "),children:l}),h2:({children:l})=>jsxRuntime.jsx("h2",{className:i.markdown.h2.join(" "),children:l}),h3:({children:l})=>jsxRuntime.jsx("h3",{className:i.markdown.h3.join(" "),children:l}),h4:({children:l})=>jsxRuntime.jsx("h4",{className:i.markdown.h4.join(" "),children:l}),h5:({children:l})=>jsxRuntime.jsx("h5",{className:i.markdown.h5.join(" "),children:l}),ul:({children:l})=>jsxRuntime.jsx("ul",{className:i.markdown.ul.join(" "),children:l}),ol:({children:l})=>jsxRuntime.jsx("ol",{className:i.markdown.ol.join(" "),children:l}),li:({children:l})=>jsxRuntime.jsx("li",{className:i.markdown.li.join(" "),children:l}),a:({children:l,href:b})=>jsxRuntime.jsx("a",{href:b,className:i.markdown.a.join(" "),children:l}),strong:({children:l})=>jsxRuntime.jsx("strong",{className:i.markdown.strong.join(" "),children:l}),em:({children:l})=>jsxRuntime.jsx("em",{className:i.markdown.em.join(" "),children:l})},children:p()})})}switch(s){case "h1":return jsxRuntime.jsx("h1",{className:c(u),children:a});case "h2":return jsxRuntime.jsx("h2",{className:c(u),children:a});case "h3":return jsxRuntime.jsx("h3",{className:c(u),children:a});case "h4":return jsxRuntime.jsx("h4",{className:c(u),children:a});case "h5":return jsxRuntime.jsx("h5",{className:c(u),children:a});case "caption":return jsxRuntime.jsx("span",{className:c(u),children:a});default:return jsxRuntime.jsx("p",{className:c(u),children:a})}}function $({component:e,processor:t,surfaceId:o,url:n,usageHint:s,fit:r="cover"}){let i=m(),a=g(n,e,t,o);if(!a)return jsxRuntime.jsx("div",{className:"text-gray-400",children:"(no image)"});let u=M(i.components.Image.all,s?i.components.Image[s]:{}),p={objectFit:r??"cover"};return jsxRuntime.jsx("img",{src:a,alt:"",className:c(u),style:p})}function F({component:e,processor:t,surfaceId:o,name:n,size:s=20,className:r,container:i,variant:a}){let u=m(),p=g(n,e,t,o);if(!p)return null;let l=p.split("-").map(k=>k.charAt(0).toUpperCase()+k.slice(1)).join(""),b=Me__namespace[l]??Me__namespace[p],d={blue:"bg-blue-50 text-blue-600",green:"bg-green-50 text-green-600",purple:"bg-purple-50 text-purple-600",orange:"bg-orange-50 text-orange-600",red:"bg-red-50 text-red-600",primary:"bg-primary/10 text-primary"},y=a?d[a]:d.primary,T=()=>b?jsxRuntime.jsx(b,{size:s,className:c(u.components.Icon,r)}):jsxRuntime.jsx("span",{className:c(u.components.Icon,"material-icons",r),style:{fontSize:s},children:p});return i?jsxRuntime.jsx("div",{className:c("flex shrink-0 items-center justify-center rounded-xl transition-all duration-300","group-hover:scale-110 group-hover:shadow-sm",y),style:{width:40,height:40},children:T()}):T()}function L({component:e,processor:t,surfaceId:o,url:n}){let s=m(),r=g(n,e,t,o);return r?jsxRuntime.jsx("section",{className:c(s.components.Video),children:jsxRuntime.jsx("video",{controls:true,src:r,className:"w-full"})}):jsxRuntime.jsx("div",{className:"text-gray-400",children:"(no video)"})}function _({component:e,processor:t,surfaceId:o,url:n,description:s}){let r=m(),i=g(n,e,t,o),a=s?g(s,e,t,o):void 0;return i?jsxRuntime.jsxs("section",{className:c(r.components.AudioPlayer),children:[a&&jsxRuntime.jsx("p",{className:"mb-2 text-sm",children:a}),jsxRuntime.jsx("audio",{controls:true,src:i,className:"w-full"})]}):jsxRuntime.jsx("div",{className:"text-gray-400",children:"(no audio)"})}function z({component:e,action:t,children:o,onAction:n}){let s=m(),r=()=>{if(!t||!n)return;let i={eventType:"a2ui.action",action:t,dataContextPath:e.dataContextPath??"/",sourceComponentId:e.id,sourceComponent:e};n(i);};return jsxRuntime.jsx("button",{type:"button",className:c(s.components.Button),onClick:r,children:o})}var Se={start:"items-start",center:"items-center",end:"items-end",stretch:"items-stretch"},De={start:"justify-start",center:"justify-center",end:"justify-end",spaceBetween:"justify-between",spaceAround:"justify-around",spaceEvenly:"justify-evenly"};function K({component:e,alignment:t="stretch",distribution:o="start",children:n}){let s=m(),r=Se[t]??Se.stretch,i=De[o]??De.start,a=e.properties??{},u=a.gap!==void 0?`gap-${a.gap}`:"";return jsxRuntime.jsx("section",{className:c(s.components.Row,r,i,u),children:n})}var Pe={start:"items-start",center:"items-center",end:"items-end",stretch:"items-stretch"},Ve={start:"justify-start",center:"justify-center",end:"justify-end",spaceBetween:"justify-between",spaceAround:"justify-around",spaceEvenly:"justify-evenly"};function H({component:e,alignment:t="stretch",distribution:o="start",children:n}){let s=m(),r=Pe[t]??Pe.stretch,i=Ve[o]??Ve.start,a=e.properties??{},u=a.spaceY!==void 0?`space-y-${a.spaceY}`:"";return jsxRuntime.jsx("section",{className:c(s.components.Column,r,i,u),children:n})}function W({direction:e="vertical",children:t}){let o=m(),n=e==="horizontal"?"flex-row overflow-x-auto":"flex-col";return jsxRuntime.jsx("section",{className:c(o.components.List,n),children:t})}function J({children:e}){let t=m();return jsxRuntime.jsx("section",{className:c(t.components.Card),children:e})}function q({component:e,processor:t,surfaceId:o,titles:n,children:s}){let r=m(),[i,a]=react.useState(0),u=()=>jsxRuntime.jsx("div",{className:c(r.components.Tabs.element),children:n.map((l,b)=>{let d=g(l,e,t,o),y=i===b?M(r.components.Tabs.controls.all,r.components.Tabs.controls.selected):{...r.components.Tabs.controls.all};return jsxRuntime.jsx("button",{disabled:i===b,className:c(y),onClick:()=>a(b),children:d},b)})}),p=s?.[i];return jsxRuntime.jsxs("section",{className:c(r.components.Tabs.container),children:[u(),jsxRuntime.jsx("div",{className:"mt-4",children:p})]})}function Z({axis:e="horizontal",thickness:t=1,color:o}){let n=m(),s={};o&&(s.borderColor=o),t&&(s.borderWidth=t);let r=e==="vertical"?"border-l h-full":"border-t w-full";return jsxRuntime.jsx("hr",{className:c(n.components.Divider,r),style:s})}function G({entryPoint:e,content:t}){let o=m(),[n,s]=react.useState(false),r=react.useCallback(()=>{s(false);},[]);return react.useEffect(()=>{if(!n)return;let i=a=>{a.key==="Escape"&&r();};return document.addEventListener("keydown",i),()=>document.removeEventListener("keydown",i)},[n,r]),n?jsxRuntime.jsx("dialog",{className:c(o.components.Modal.backdrop),open:true,role:"dialog","aria-modal":"true",onClick:i=>{i.target===i.currentTarget&&r();},children:jsxRuntime.jsxs("section",{className:c(o.components.Modal.element),children:[jsxRuntime.jsx("div",{className:"mb-2 flex justify-end",children:jsxRuntime.jsx("button",{type:"button",className:"rounded p-1 hover:bg-gray-100",onClick:r,"aria-label":"Close modal",children:"\u2715"})}),t]})}):jsxRuntime.jsx("button",{type:"button",onClick:()=>s(true),className:"cursor-pointer",children:e})}function Q({component:e,processor:t,surfaceId:o,label:n,value:s}){let r=m(),i=g(n,e,t,o),a=false;s&&("literalBoolean"in s&&s.literalBoolean!==void 0?a=s.literalBoolean:"path"in s&&s.path&&t&&e&&(a=!!t.getData(e,s.path,o??R.DEFAULT_SURFACE_ID)));let u=p=>{!s||!t||!("path"in s)||!s.path||t.setData(e,s.path,p.target.checked,o??R.DEFAULT_SURFACE_ID);};return jsxRuntime.jsxs("section",{className:c(r.components.CheckBox.container),children:[jsxRuntime.jsx("input",{type:"checkbox",id:`checkbox-${e.id}`,className:c(r.components.CheckBox.element),checked:a,onChange:u}),jsxRuntime.jsx("label",{htmlFor:`checkbox-${e.id}`,className:c(r.components.CheckBox.label),children:i})]})}function ee({component:e,processor:t,surfaceId:o,label:n,text:s,type:r="shortText"}){let i=m(),a=g(n,e,t,o),u=s?g(s,e,t,o):"",p=d=>{!s||!t||!("path"in s)||!s.path||t.setData(e,s.path,d.target.value,o??R.DEFAULT_SURFACE_ID);},l=r==="number"?"number":r==="date"?"date":"text",b=r==="longText";return jsxRuntime.jsxs("section",{className:c(i.components.TextField.container),children:[a&&jsxRuntime.jsx("label",{htmlFor:`textfield-${e.id}`,className:c(i.components.TextField.label),children:a}),b?jsxRuntime.jsx("textarea",{id:`textfield-${e.id}`,className:c(i.components.TextField.element),value:u,onChange:p,placeholder:"Please enter a value",rows:4}):jsxRuntime.jsx("input",{id:`textfield-${e.id}`,type:l,className:c(i.components.TextField.element),value:u,onChange:p,placeholder:"Please enter a value",autoComplete:"off"})]})}function te({component:e,processor:t,surfaceId:o,value:n,enableDate:s=true,enableTime:r=true}){let i=m(),a=g(n,e,t,o),u=l=>{!n||!t||!("path"in n)||!n.path||t.setData(e,n.path,l.target.value,o??R.DEFAULT_SURFACE_ID);},p="datetime-local";return s&&!r?p="date":!s&&r&&(p="time"),jsxRuntime.jsx("section",{className:c(i.components.DateTimeInput.container),children:jsxRuntime.jsx("input",{type:p,id:`datetime-${e.id}`,className:c(i.components.DateTimeInput.element),value:a,onChange:u})})}function oe({component:e,processor:t,surfaceId:o,selections:n,options:s=[]}){let r=m(),i=a=>{!n||!t||!("path"in n)||!n.path||t.setData(e,n.path,[a.target.value],o??R.DEFAULT_SURFACE_ID);};return jsxRuntime.jsxs("section",{className:c(r.components.MultipleChoice.container),children:[jsxRuntime.jsx("label",{htmlFor:`multichoice-${e.id}`,className:c(r.components.MultipleChoice.label),children:"Select an item"}),jsxRuntime.jsx("select",{id:`multichoice-${e.id}`,className:c(r.components.MultipleChoice.element),onChange:i,children:s?.map((a,u)=>{let p=g(a.label,e,t,o);return jsxRuntime.jsx("option",{value:a.value,children:p},u)})})]})}function ne({component:e,processor:t,surfaceId:o,value:n,minValue:s,maxValue:r}){let i=m(),a=D(n,e,t,o),u=typeof s=="number"?s:s?D(s,e,t,o):0,p=typeof r=="number"?r:r?D(r,e,t,o):100,l=b=>{!n||!t||!("path"in n)||!n.path||t.setData(e,n.path,Number(b.target.value),o??R.DEFAULT_SURFACE_ID);};return jsxRuntime.jsxs("section",{className:c(i.components.Slider.container),children:[jsxRuntime.jsx("input",{type:"range",id:`slider-${e.id}`,className:c(i.components.Slider.element),value:a,min:u,max:p,onChange:l}),jsxRuntime.jsx("span",{className:c(i.components.Slider.label),children:a})]})}var V=class{constructor(){N(this,"registry",new Map);}register(t,o){if(!/^[a-zA-Z0-9]+$/.test(t))throw new Error(`[Registry] Invalid typeName '${t}'. Must be alphanumeric.`);this.registry.set(t,o);}get(t){return this.registry.get(t)}has(t){return this.registry.has(t)}unregister(t){return this.registry.delete(t)}getRegisteredTypes(){return Array.from(this.registry.keys())}},E=new V;function se({processor:e,surfaceId:t,childComponents:o,enableCustomElements:n=false,onAction:s}){return !o||!Array.isArray(o)?null:jsxRuntime.jsx(jsxRuntime.Fragment,{children:o.map(r=>jsxRuntime.jsx(v,{component:r,processor:e,surfaceId:t,enableCustomElements:n,onAction:s},r.id))})}function v({component:e,processor:t,surfaceId:o,enableCustomElements:n,onAction:s}){if(n){let r=E.get(e.type);if(r)return jsxRuntime.jsx(r,{component:e,processor:t,surfaceId:o,...e.properties},e.id)}switch(e.type){case "Text":{let r=e;return jsxRuntime.jsx(j,{component:r,processor:t,surfaceId:o,text:r.properties.text,usageHint:r.properties.usageHint},r.id)}case "Image":{let r=e;return jsxRuntime.jsx($,{component:r,processor:t,surfaceId:o,url:r.properties.url,usageHint:r.properties.usageHint,fit:r.properties.fit},r.id)}case "Icon":{let r=e;return jsxRuntime.jsx(F,{component:r,processor:t,surfaceId:o,name:r.properties.name,container:r.properties.container,variant:r.properties.variant,size:r.properties.size},r.id)}case "Video":{let r=e;return jsxRuntime.jsx(L,{component:r,processor:t,surfaceId:o,url:r.properties.url},r.id)}case "AudioPlayer":{let r=e;return jsxRuntime.jsx(_,{component:r,processor:t,surfaceId:o,url:r.properties.url,description:r.properties.description},r.id)}case "Button":{let r=e;return jsxRuntime.jsx(z,{component:r,processor:t,surfaceId:o,action:r.properties.action,onAction:s,children:r.properties.child&&jsxRuntime.jsx(v,{component:r.properties.child,processor:t,surfaceId:o,enableCustomElements:n,onAction:s})},r.id)}case "Row":{let r=e;return jsxRuntime.jsx(K,{component:r,processor:t,surfaceId:o,alignment:r.properties.alignment,distribution:r.properties.distribution,children:r.properties.children?.map(i=>jsxRuntime.jsx(v,{component:i,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},i.id))},r.id)}case "Column":{let r=e;return jsxRuntime.jsx(H,{component:r,processor:t,surfaceId:o,alignment:r.properties.alignment,distribution:r.properties.distribution,children:r.properties.children?.map(i=>jsxRuntime.jsx(v,{component:i,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},i.id))},r.id)}case "List":{let r=e;return jsxRuntime.jsx(W,{component:r,processor:t,surfaceId:o,direction:r.properties.direction,children:r.properties.children?.map(i=>jsxRuntime.jsx(v,{component:i,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},i.id))},r.id)}case "Card":{let r=e,i=r.properties.children??(r.properties.child?[r.properties.child]:[]);return jsxRuntime.jsx(J,{component:r,processor:t,surfaceId:o,children:i.map(a=>jsxRuntime.jsx(v,{component:a,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},a.id))},r.id)}case "Tabs":{let r=e,i=r.properties.tabItems?.map(u=>u.title)??[],a=r.properties.tabItems?.map(u=>jsxRuntime.jsx(v,{component:u.child,processor:t,surfaceId:o,enableCustomElements:n,onAction:s},u.child.id));return jsxRuntime.jsx(q,{component:r,processor:t,surfaceId:o,titles:i,children:a},r.id)}case "Divider":{let r=e;return jsxRuntime.jsx(Z,{component:r,processor:t,surfaceId:o,axis:r.properties.axis,thickness:r.properties.thickness,color:r.properties.color},r.id)}case "Modal":{let r=e;return jsxRuntime.jsx(G,{component:r,processor:t,surfaceId:o,entryPoint:jsxRuntime.jsx(v,{component:r.properties.entryPointChild,processor:t,surfaceId:o,enableCustomElements:n,onAction:s}),content:jsxRuntime.jsx(v,{component:r.properties.contentChild,processor:t,surfaceId:o,enableCustomElements:n,onAction:s})},r.id)}case "CheckBox":{let r=e;return jsxRuntime.jsx(Q,{component:r,processor:t,surfaceId:o,label:r.properties.label,value:r.properties.value},r.id)}case "TextField":{let r=e;return jsxRuntime.jsx(ee,{component:r,processor:t,surfaceId:o,label:r.properties.label,text:r.properties.text,type:r.properties.type,validationRegexp:r.properties.validationRegexp},r.id)}case "DateTimeInput":{let r=e;return jsxRuntime.jsx(te,{component:r,processor:t,surfaceId:o,value:r.properties.value,enableDate:r.properties.enableDate,enableTime:r.properties.enableTime},r.id)}case "MultipleChoice":{let r=e;return jsxRuntime.jsx(oe,{component:r,processor:t,surfaceId:o,selections:r.properties.selections,options:r.properties.options,maxAllowedSelections:r.properties.maxAllowedSelections},r.id)}case "Slider":{let r=e;return jsxRuntime.jsx(ne,{component:r,processor:t,surfaceId:o,value:r.properties.value,minValue:r.properties.minValue,maxValue:r.properties.maxValue},r.id)}default:{if(n){let r=E.get(e.type);if(r)return jsxRuntime.jsx(r,{component:e,processor:t,surfaceId:o,...e.properties},e.id)}return jsxRuntime.jsxs("div",{className:"rounded border border-yellow-300 p-2 text-yellow-600",children:["Unknown component type: ",e.type]},e.id)}}}function pt({surfaceId:e,surface:t,processor:o,enableCustomElements:n=false,onAction:s}){if(!t)return null;let r=()=>t.styles?.logoUrl?jsxRuntime.jsx("div",{className:"mb-4 flex justify-center",children:jsxRuntime.jsx("img",{src:t.styles.logoUrl,alt:"Logo",className:"w-1/2 max-w-[220px]"})}):null,i=()=>jsxRuntime.jsx(se,{surfaceId:e,processor:o,childComponents:t.componentTree?[t.componentTree]:null,enableCustomElements:n,onAction:s});return jsxRuntime.jsxs("div",{className:"a2ui-surface a2ui-root flex flex-col gap-8 p-10 pb-20",style:{"--p-50":t.styles?.primaryColor??"var(--primary)"},children:[r(),i()]})}function ft({children:e,className:t}){let o=m();return jsxRuntime.jsx("div",{className:t,children:jsxRuntime.jsx(Ue__default.default,{components:{p:({children:n})=>jsxRuntime.jsx("p",{className:o.markdown.p.join(" "),children:n}),h1:({children:n})=>jsxRuntime.jsx("h1",{className:o.markdown.h1.join(" "),children:n}),h2:({children:n})=>jsxRuntime.jsx("h2",{className:o.markdown.h2.join(" "),children:n}),h3:({children:n})=>jsxRuntime.jsx("h3",{className:o.markdown.h3.join(" "),children:n}),h4:({children:n})=>jsxRuntime.jsx("h4",{className:o.markdown.h4.join(" "),children:n}),h5:({children:n})=>jsxRuntime.jsx("h5",{className:o.markdown.h5.join(" "),children:n}),ul:({children:n})=>jsxRuntime.jsx("ul",{className:o.markdown.ul.join(" "),children:n}),ol:({children:n})=>jsxRuntime.jsx("ol",{className:o.markdown.ol.join(" "),children:n}),li:({children:n})=>jsxRuntime.jsx("li",{className:o.markdown.li.join(" "),children:n}),a:({children:n,href:s})=>jsxRuntime.jsx("a",{href:s,className:o.markdown.a.join(" "),children:n}),strong:({children:n})=>jsxRuntime.jsx("strong",{className:o.markdown.strong.join(" "),children:n}),em:({children:n})=>jsxRuntime.jsx("em",{className:o.markdown.em.join(" "),children:n})},children:e})})}function ht(e){return jsxRuntime.jsx(Ue__default.default,{children:e})}
|
|
2
|
+
exports.Audio=_;exports.Button=z;exports.Card=J;exports.Checkbox=Q;exports.Column=H;exports.ComponentRegistry=V;exports.ComponentRenderer=v;exports.DateTimeInput=te;exports.Divider=Z;exports.Icon=F;exports.Image=$;exports.List=W;exports.Markdown=ft;exports.Modal=G;exports.MultipleChoice=oe;exports.Root=se;exports.Row=K;exports.Slider=ne;exports.Surface=pt;exports.Tabs=q;exports.Text=j;exports.TextField=ee;exports.Video=L;exports.cn=c;exports.componentRegistry=E;exports.extractNumberValue=D;exports.extractStringValue=g;exports.renderMarkdown=ht;
|