@a2ui/angular 0.9.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -1
- package/README.md +9 -9
- package/fesm2022/a2ui-angular-src-v0_8.mjs +65 -59
- package/fesm2022/a2ui-angular-src-v0_8.mjs.map +1 -1
- package/fesm2022/a2ui-angular-src-v0_9.mjs +198 -146
- package/fesm2022/a2ui-angular-src-v0_9.mjs.map +1 -1
- package/fesm2022/a2ui-angular-v0_8.mjs +65 -59
- package/fesm2022/a2ui-angular-v0_8.mjs.map +1 -1
- package/fesm2022/a2ui-angular-v0_9.mjs +198 -146
- package/fesm2022/a2ui-angular-v0_9.mjs.map +1 -1
- package/fesm2022/a2ui-angular.mjs +65 -59
- package/fesm2022/a2ui-angular.mjs.map +1 -1
- package/package.json +3 -3
- package/types/a2ui-angular-src-v0_8.d.ts +159 -106
- package/types/a2ui-angular-src-v0_9.d.ts +265 -125
- package/types/a2ui-angular-v0_8.d.ts +159 -106
- package/types/a2ui-angular-v0_9.d.ts +265 -125
- package/types/a2ui-angular.d.ts +159 -106
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2ui-angular-src-v0_8.mjs","sources":["../../src/v0_8/data/processor.ts","../../src/v0_8/data/types.ts","../../src/v0_8/data/markdown.ts","../../src/v0_8/data/index.ts","../../src/v0_8/rendering/theming.ts","../../src/v0_8/rendering/dynamic-component.ts","../../src/v0_8/components/audio.ts","../../src/v0_8/rendering/catalog.ts","../../src/v0_8/rendering/renderer.ts","../../src/v0_8/components/button.ts","../../src/v0_8/components/card.ts","../../src/v0_8/components/checkbox.ts","../../src/v0_8/components/column.ts","../../src/v0_8/components/datetime-input.ts","../../src/v0_8/components/divider.ts","../../src/v0_8/components/icon.ts","../../src/v0_8/components/image.ts","../../src/v0_8/components/list.ts","../../src/v0_8/components/modal.ts","../../src/v0_8/components/multiple-choice.ts","../../src/v0_8/components/row.ts","../../src/v0_8/components/slider.ts","../../src/v0_8/components/tabs.ts","../../src/v0_8/components/text.ts","../../src/v0_8/components/text-field.ts","../../src/v0_8/components/video.ts","../../src/v0_8/catalog/index.ts","../../src/v0_8/components/surface.ts","../../src/v0_8/rendering/index.ts","../../src/v0_8/config.ts","../../src/v0_8/types.ts","../../src/v0_8/public-api.ts","../../src/v0_8/a2ui-angular-src-v0_8.ts"],"sourcesContent":["/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable, signal } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\nimport * as WebCore from '@a2ui/web_core/v0_8';\n\nimport { Types } from '../types';\n\nexport interface A2UIClientEvent {\n message: Types.A2UIClientEventMessage;\n completion: Subject<Types.ServerToClientMessage[]>;\n}\n\nexport type DispatchedEvent = A2UIClientEvent;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageProcessor {\n private baseProcessor: WebCore.A2uiMessageProcessor;\n\n private readonly eventsSubject = new Subject<A2UIClientEvent>();\n readonly events: Observable<A2UIClientEvent> = this.eventsSubject.asObservable();\n // Signal to track the version of the data in the MessageProcessor. Since the base processor updates \n // surfaces in-place (mutating the Map), we use this to force Angular's change detection to \n // re-evaluate any components or effects that depend on getSurfaces().\n private readonly versionSignal = signal(0);\n readonly version = this.versionSignal.asReadonly();\n\n constructor() {\n this.baseProcessor = new WebCore.A2uiMessageProcessor();\n }\n\n /**\n * Increments the version signal to notify Angular that the data model has changed.\n * This should be called after any update to the underlying base processor's surfaces.\n */\n private notify() {\n this.versionSignal.update((v) => v + 1);\n }\n\n processMessages(messages: Types.ServerToClientMessage[]) {\n this.baseProcessor.processMessages(messages as WebCore.ServerToClientMessage[]);\n this.notify();\n }\n\n dispatch(message: Types.A2UIClientEventMessage): Promise<Types.ServerToClientMessage[]> {\n const completion = new Subject<Types.ServerToClientMessage[]>();\n const promise = new Promise<Types.ServerToClientMessage[]>((resolve, reject) => {\n completion.subscribe({\n next: (msgs) => resolve(msgs),\n error: (err) => reject(err),\n });\n });\n\n this.eventsSubject.next({ message, completion });\n return promise;\n }\n\n getData(node: Types.AnyComponentNode, path: string, surfaceId?: string | null): unknown {\n return this.baseProcessor.getData(\n node as WebCore.AnyComponentNode,\n path,\n surfaceId ?? undefined,\n );\n }\n\n setData(node: Types.AnyComponentNode | null, path: string, value: any, surfaceId: string) {\n this.baseProcessor.setData(node as WebCore.AnyComponentNode | null, path, value, surfaceId);\n this.notify();\n }\n\n resolvePath(path: string, dataContextPath?: string): string {\n return this.baseProcessor.resolvePath(path, dataContextPath);\n }\n\n getSurfaces(): ReadonlyMap<string, WebCore.Surface> {\n this.versionSignal(); // Track dependency\n const allSurfaces = this.baseProcessor.getSurfaces();\n const readySurfaces = new Map<string, WebCore.Surface>();\n for (const [id, surface] of allSurfaces.entries()) {\n if (surface.rootComponentId != null) {\n readySurfaces.set(id, surface);\n }\n }\n return readySurfaces;\n }\n\n clearSurfaces() {\n this.baseProcessor.clearSurfaces();\n this.notify();\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Types } from '../types';\n\nexport interface A2TextPayload {\n kind: 'text';\n text: string;\n}\n\nexport interface A2DataPayload {\n kind: 'data';\n data: Types.ServerToClientMessage;\n}\n\nexport type A2AServerPayload = Array<A2DataPayload | A2TextPayload> | { error: string };\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Types } from '../types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport abstract class MarkdownRenderer {\n abstract render(markdown: string, options?: Types.MarkdownRendererOptions): Promise<string>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DefaultMarkdownRenderer extends MarkdownRenderer {\n private static warningLogged = false;\n\n override async render(\n markdown: string,\n options?: Types.MarkdownRendererOptions,\n ): Promise<string> {\n try {\n // @ts-ignore - optional peer dependency\n const { renderMarkdown } = await import('@a2ui/markdown-it');\n return await renderMarkdown(markdown, options);\n } catch (e) {\n if (!DefaultMarkdownRenderer.warningLogged) {\n console.warn(\"[DefaultMarkdownRenderer] Failed to load optional `@a2ui/markdown-it` renderer. Using fallback regex.\");\n DefaultMarkdownRenderer.warningLogged = true;\n }\n // Basic implementation for v0.8\n return markdown;\n }\n }\n}\n\nexport function provideMarkdownRenderer(renderFn?: Types.MarkdownRenderer) {\n if (renderFn) {\n return {\n provide: MarkdownRenderer,\n useValue: {\n render: renderFn,\n },\n };\n }\n return { provide: MarkdownRenderer, useClass: DefaultMarkdownRenderer };\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './processor';\nexport * from './types';\nexport { provideMarkdownRenderer } from './markdown';\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Types } from '../types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Theme {\n components: Types.Theme['components'] = {} as Types.Theme['components'];\n elements: Types.Theme['elements'] = {} as Types.Theme['elements'];\n markdown: Types.Theme['markdown'] = {\n p: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n ul: [],\n ol: [],\n li: [],\n a: [],\n strong: [],\n em: [],\n };\n additionalStyles?: Types.Theme['additionalStyles'];\n\n update(theme: Types.Theme) {\n this.components = theme.components;\n this.elements = theme.elements;\n this.markdown = theme.markdown;\n this.additionalStyles = theme.additionalStyles;\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, inject, input } from '@angular/core';\nimport { MessageProcessor } from '../data';\nimport { Theme } from './theming';\nimport { Types } from '../types';\n\nlet idCounter = 0;\n\n@Directive({\n host: {\n '[style.--weight]': 'weight()',\n },\n})\nexport abstract class DynamicComponent<T extends Types.AnyComponentNode = Types.AnyComponentNode> {\n protected readonly processor = inject(MessageProcessor);\n protected readonly theme = inject(Theme);\n\n readonly surfaceId = input.required<Types.SurfaceID | null>();\n readonly component = input.required<T>();\n readonly weight = input.required<string | number>();\n\n protected sendAction(action: Types.Action): Promise<Types.ServerToClientMessage[]> {\n const component = this.component();\n const surfaceId = this.surfaceId() ?? undefined;\n const context: Record<string, unknown> = {};\n\n if (action.context) {\n for (const item of action.context) {\n if (item.value.literalBoolean !== undefined) {\n context[item.key] = item.value.literalBoolean;\n } else if (item.value.literalNumber !== undefined) {\n context[item.key] = item.value.literalNumber;\n } else if (item.value.literalString !== undefined) {\n context[item.key] = item.value.literalString;\n } else if (item.value.path) {\n const path = this.processor.resolvePath(item.value.path, component.dataContextPath);\n const value = this.processor.getData(component, path, surfaceId);\n context[item.key] = value;\n }\n }\n }\n\n const message: Types.A2UIClientEventMessage = {\n userAction: {\n name: action.name,\n sourceComponentId: component.id,\n surfaceId: surfaceId!,\n timestamp: new Date().toISOString(),\n context,\n },\n };\n\n return this.processor.dispatch(message);\n }\n\n protected resolvePrimitive(value: Types.StringValue | null): string | null;\n protected resolvePrimitive(value: Types.BooleanValue | null): boolean | null;\n protected resolvePrimitive(value: Types.NumberValue | null): number | null;\n protected resolvePrimitive(\n value: Types.StringValue | Types.BooleanValue | Types.NumberValue | null,\n ) {\n const component = this.component();\n const surfaceId = this.surfaceId();\n\n if (!value || typeof value !== 'object') {\n return null;\n } else if ('literal' in value && value.literal != null) {\n return value.literal;\n } else if (value.path) {\n return this.processor.getData(component, value.path, surfaceId ?? undefined) as any;\n } else if ('literalString' in value) {\n return value.literalString;\n } else if ('literalNumber' in value) {\n return value.literalNumber;\n } else if ('literalBoolean' in value) {\n return value.literalBoolean;\n }\n\n return null;\n }\n\n protected getUniqueId(prefix: string) {\n return `${prefix}-${idCounter++}`;\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-audio',\n template: `\n <audio controls [src]=\"resolvedUrl()\" [style]=\"theme.additionalStyles?.AudioPlayer\"></audio>\n `,\n styles: `\n :host {\n display: flex;\n }\n audio {\n width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AudioPlayer extends DynamicComponent<Types.AudioPlayerNode> {\n readonly url = input.required<Types.StringValue | null>();\n protected readonly resolvedUrl = computed(() => this.resolvePrimitive(this.url()));\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Binding, InjectionToken, Type } from '@angular/core';\nimport { DynamicComponent } from './dynamic-component';\nimport { Types } from '../types';\n\nexport type CatalogLoader = () =>\n | Promise<Type<DynamicComponent<any>>>\n | Type<DynamicComponent<any>>;\n\nexport type CatalogEntry<T extends Types.AnyComponentNode> =\n | CatalogLoader\n | {\n type: CatalogLoader;\n bindings: (data: T) => Binding[];\n };\n\nexport interface Catalog {\n [key: string]: CatalogEntry<Types.AnyComponentNode>;\n}\n\nexport const Catalog = new InjectionToken<Catalog>('Catalog');\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Directive,\n effect,\n inject,\n input,\n ViewContainerRef,\n Type,\n PLATFORM_ID,\n ComponentRef,\n} from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { structuralStyles } from '@a2ui/web_core/styles/index';\nimport { Catalog } from './catalog';\nimport { MessageProcessor } from '../data';\nimport { Types } from '../types';\nimport { DynamicComponent } from './dynamic-component';\n\n@Directive({\n selector: '[a2ui-renderer]',\n standalone: true,\n})\nexport class Renderer {\n private static hasInsertedStyles = false;\n\n private readonly catalog = inject(Catalog);\n private readonly container = inject(ViewContainerRef);\n private readonly processor: MessageProcessor = inject(MessageProcessor);\n\n readonly surfaceId = input.required<Types.SurfaceID>();\n readonly component = input.required<Types.AnyComponentNode>();\n\n private currentId: string | null = null;\n private currentType: string | null = null;\n private currentComponentRef: ComponentRef<DynamicComponent<Types.AnyComponentNode>> | null = null;\n\n constructor() {\n const platformId = inject(PLATFORM_ID);\n const document = inject(DOCUMENT);\n\n if (!Renderer.hasInsertedStyles && isPlatformBrowser(platformId)) {\n const styleElement = document.createElement('style');\n styleElement.textContent = structuralStyles;\n document.head.appendChild(styleElement);\n Renderer.hasInsertedStyles = true;\n }\n\n effect(() => {\n // Explicitly depend on the MessageProcessor's version signal. This ensures that the effect re-runs \n // whenever data model changes occur, even if the node's object reference remains identical \n // (as in the case of in-place mutations from local updates).\n this.processor.version();\n\n let node = this.component();\n const surfaceId = this.surfaceId();\n\n // Handle v0.8 wrapped component format\n if (!node.type && (node as any).component) {\n const wrapped = (node as any).component;\n const type = Object.keys(wrapped)[0];\n if (type) {\n node = {\n ...node,\n type: type as any,\n properties: wrapped[type],\n };\n }\n }\n\n const id = node.id;\n const type = node.type;\n\n // Focus Loss Prevention:\n // If we have an existing component and its unique identity (ID and Type) hasn't changed,\n // we update its @Input() values in-place. This preserves the underlying DOM element, \n // maintaining focus, text selection, and cursor position.\n if (this.currentComponentRef && this.currentId === id && this.currentType === type) {\n this.updateInputs(this.currentComponentRef, node, surfaceId);\n return;\n }\n\n // Otherwise, clear and re-create the component because its identity has changed.\n const container = this.container;\n container.clear();\n this.currentComponentRef = null;\n this.currentId = id;\n this.currentType = type;\n\n const config = this.catalog[node.type];\n if (!config) {\n console.error(`Unknown component type: ${node.type}`);\n return;\n }\n\n this.render(container, node, surfaceId, config);\n });\n }\n\n private render(\n container: ViewContainerRef,\n node: Types.AnyComponentNode,\n surfaceId: string,\n config: any,\n ) {\n const componentTypeOrPromise = this.resolveComponentType(config);\n\n if (componentTypeOrPromise instanceof Promise) {\n componentTypeOrPromise.then((componentType) => {\n // Ensure we are still supposed to render this component\n if (this.currentId === node.id && this.currentType === node.type) {\n const componentRef = container.createComponent(componentType) as ComponentRef<DynamicComponent<Types.AnyComponentNode>>;\n this.currentComponentRef = componentRef;\n this.updateInputs(componentRef, node, surfaceId);\n }\n });\n } else if (componentTypeOrPromise) {\n const componentRef = container.createComponent(componentTypeOrPromise) as ComponentRef<DynamicComponent<Types.AnyComponentNode>>;\n this.currentComponentRef = componentRef;\n this.updateInputs(componentRef, node, surfaceId);\n }\n }\n\n private resolveComponentType(config: any): Type<unknown> | Promise<Type<unknown>> | null {\n if (typeof config === 'function') {\n return config();\n } else if (typeof config === 'object' && config !== null) {\n if (typeof config.type === 'function') {\n return config.type();\n } else {\n return config.type;\n }\n }\n return null;\n }\n\n /** \n * Updates the inputs of an existing component instance with the latest data from the node.\n * This is called during component reuse to keep the UI in sync without losing DOM state (like focus).\n */\n private updateInputs(\n componentRef: ComponentRef<DynamicComponent<Types.AnyComponentNode>>,\n node: Types.AnyComponentNode,\n surfaceId: string,\n ) {\n componentRef.setInput('surfaceId', surfaceId);\n componentRef.setInput('component', node);\n componentRef.setInput('weight', node.weight ?? 0);\n\n const props = node.properties as Record<string, unknown>;\n for (const [key, value] of Object.entries(props)) {\n try {\n componentRef.setInput(key, value);\n } catch (e) {\n console.warn(\n `[Renderer] Property \"${key}\" could not be set on component ${node.type}. If this property is required by the specification, ensure the component declares it as an input.`,\n );\n }\n }\n componentRef.changeDetectorRef.markForCheck();\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { Types } from '../types';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Renderer } from '../rendering/renderer';\n\n@Component({\n selector: 'a2ui-button',\n imports: [Renderer],\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n <button\n [class]=\"theme.components.Button\"\n [style]=\"theme.additionalStyles?.Button\"\n (click)=\"handleClick()\"\n >\n @if (child()) {\n <ng-container\n a2ui-renderer\n [surfaceId]=\"surfaceId()!\"\n [component]=\"child() ?? component().properties.child\"\n />\n }\n </button>\n `,\n styles: `\n :host {\n display: block;\n flex: var(--weight);\n min-height: 0;\n }\n `,\n})\nexport class Button extends DynamicComponent<Types.ButtonNode> {\n readonly action = input<Types.Action | null>(null);\n readonly child = input<Types.AnyComponentNode | null>(null);\n // This is currently not handled by the template.\n readonly primary = input<boolean | null>(false);\n\n protected handleClick() {\n const action = this.action();\n\n if (action) {\n super.sendAction(action);\n }\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Renderer } from '../rendering/renderer';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-card',\n imports: [Renderer],\n template: `\n <div [class]=\"theme.components.Card\" [style]=\"theme.additionalStyles?.Card\">\n @if (child()) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"child()!\" />\n }\n\n @for (comp of children(); track comp.id) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"comp\" />\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Card extends DynamicComponent<Types.CardNode> {\n readonly child = input<Types.AnyComponentNode | null>(null);\n readonly children = input<Types.AnyComponentNode[]>([]);\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-checkbox',\n template: `\n <label>\n <input\n type=\"checkbox\"\n [id]=\"inputId\"\n [checked]=\"inputChecked()\"\n (change)=\"onToggle($event)\"\n />\n {{ resolvedLabel() }}\n </label>\n `,\n styles: `\n :host {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Checkbox extends DynamicComponent<Types.CheckboxNode> {\n readonly label = input.required<Types.StringValue | null>();\n readonly checked = input.required<Types.BooleanValue | null>();\n\n protected inputChecked = computed(() => super.resolvePrimitive(this.checked()) ?? false);\n protected resolvedLabel = computed(() => super.resolvePrimitive(this.label()));\n protected readonly inputId = super.getUniqueId('a2ui-checkbox');\n\n onToggle(event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n const checkedNode = this.checked();\n if (checkedNode && typeof checkedNode === 'object' && 'path' in checkedNode && checkedNode.path) {\n // Update the local data model directly to ensure immediate UI feedback and avoid unnecessary network requests.\n this.processor.processMessages([{\n dataModelUpdate: {\n surfaceId: this.surfaceId()!,\n path: this.processor.resolvePath(checkedNode.path as string, this.component().dataContextPath),\n contents: [{ key: '.', valueBoolean: checked }],\n },\n }]);\n } else {\n this.sendAction({\n name: 'toggle',\n context: [{ key: 'checked', value: { literalBoolean: checked } }],\n });\n }\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Types } from '../types';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Renderer } from '../rendering/renderer';\n\n@Component({\n selector: 'a2ui-column',\n imports: [Renderer],\n changeDetection: ChangeDetectionStrategy.Eager,\n styles: `\n :host {\n display: flex;\n flex: var(--weight);\n }\n\n section {\n display: flex;\n flex-direction: column;\n min-width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n\n .align-start {\n align-items: start;\n }\n\n .align-center {\n align-items: center;\n }\n\n .align-end {\n align-items: end;\n }\n\n .align-stretch {\n align-items: stretch;\n }\n\n .distribute-start {\n justify-content: start;\n }\n\n .distribute-center {\n justify-content: center;\n }\n\n .distribute-end {\n justify-content: end;\n }\n\n .distribute-spaceBetween {\n justify-content: space-between;\n }\n\n .distribute-spaceAround {\n justify-content: space-around;\n }\n\n .distribute-spaceEvenly {\n justify-content: space-evenly;\n }\n `,\n template: `\n <section [class]=\"classes()\" [style]=\"theme.additionalStyles?.Column\">\n @for (child of children() ?? component().properties.children; track child?.id ?? child) {\n @if (child) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"child\" />\n }\n }\n </section>\n `,\n})\nexport class Column extends DynamicComponent<Types.ColumnNode> {\n readonly alignment = input<Types.ResolvedColumn['alignment']>('stretch');\n readonly distribution = input<Types.ResolvedColumn['distribution']>('start');\n readonly children = input<Types.AnyComponentNode[] | null>();\n\n protected readonly classes = computed(() => ({\n ...this.theme.components.Column,\n [`align-${this.alignment()}`]: true,\n [`distribute-${this.distribution()}`]: true,\n }));\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-datetime-input',\n template: `\n <div\n [class]=\"theme.components.DateTimeInput.container\"\n [style]=\"theme.additionalStyles?.DateTimeInput\"\n >\n <label [class]=\"theme.components.DateTimeInput.label\" [for]=\"inputId\">\n {{ resolvedLabel() }}\n </label>\n <input\n [type]=\"inputType()\"\n [class]=\"theme.components.DateTimeInput.element\"\n [id]=\"inputId\"\n [value]=\"resolvedValue() ?? ''\"\n (change)=\"onChange($event)\"\n />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateTimeInput extends DynamicComponent<Types.DateTimeInputNode> {\n readonly label = input<Types.StringValue | null>(null);\n readonly value = input.required<Types.StringValue | null>();\n readonly enableDate = input<boolean>(true);\n readonly enableTime = input<boolean>(false);\n\n protected readonly inputId = super.getUniqueId('a2ui-datetime-input');\n\n protected inputType = computed(() => {\n if (this.enableDate() && this.enableTime()) return 'datetime-local';\n if (this.enableTime()) return 'time';\n return 'date';\n });\n\n protected readonly resolvedLabel = computed(() => super.resolvePrimitive(this.label()));\n protected resolvedValue = computed(() => super.resolvePrimitive(this.value()));\n\n onChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n const valueNode = this.value();\n if (valueNode && typeof valueNode === 'object' && 'path' in valueNode && valueNode.path) {\n // Update the local data model directly to ensure immediate UI feedback and avoid unnecessary network requests.\n this.processor.processMessages([{\n dataModelUpdate: {\n surfaceId: this.surfaceId()!,\n path: this.processor.resolvePath(valueNode.path as string, this.component().dataContextPath),\n contents: [{ key: '.', valueString: value }],\n },\n }]);\n } else {\n this.handleAction('change', { value });\n }\n }\n\n private handleAction(name: string, context: Record<string, unknown>) {\n super.sendAction({\n name,\n context: Object.entries(context).map(([key, val]) => ({\n key,\n value: typeof val === 'number' ? { literalNumber: val } : { literalString: String(val) },\n })),\n });\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { Types } from '../types';\nimport { DynamicComponent } from '../rendering/dynamic-component';\n\n@Component({\n selector: 'a2ui-divider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<hr [class]=\"theme.components.Divider\" [style]=\"theme.additionalStyles?.Divider\"/>',\n styles: `\n :host {\n display: block;\n min-height: 0;\n overflow: auto;\n }\n\n hr {\n height: 1px;\n background: #ccc;\n border: none;\n }\n `,\n})\nexport class Divider extends DynamicComponent<Types.DividerNode> {}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-icon',\n host: {\n 'aria-hidden': 'true',\n tabindex: '-1',\n },\n changeDetection: ChangeDetectionStrategy.Eager,\n styles: `\n :host {\n display: block;\n flex: var(--weight);\n min-height: 0;\n overflow: auto;\n }\n `,\n template: `\n @let resolvedName = this.resolvedName();\n\n @if (resolvedName) {\n <section [class]=\"theme.components.Icon\" [style]=\"theme.additionalStyles?.Icon\">\n <span class=\"g-icon\">{{ resolvedName }}</span>\n </section>\n }\n `,\n})\nexport class Icon extends DynamicComponent<Types.IconNode> {\n readonly name = input<Types.StringValue | null>(null);\n protected readonly resolvedName = computed(() => this.resolvePrimitive(this.name()));\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport * as Primitives from '@a2ui/web_core/types/primitives';\nimport * as Styles from '@a2ui/web_core/styles/index';\nimport { Types } from '../types';\nimport { DynamicComponent } from '../rendering/dynamic-component';\n\n@Component({\n selector: 'a2ui-image',\n changeDetection: ChangeDetectionStrategy.Eager,\n styles: `\n :host {\n display: block;\n flex: var(--weight);\n min-height: 0;\n overflow: auto;\n }\n\n img {\n display: block;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n `,\n template: `\n @let resolvedUrl = this.resolvedUrl();\n @let resolvedAltText = this.resolvedAltText();\n\n @if (resolvedUrl) {\n <section [class]=\"classes()\" [style]=\"theme.additionalStyles?.Image\">\n <img [src]=\"resolvedUrl\" [alt]=\"resolvedAltText\" />\n </section>\n }\n `,\n})\nexport class Image extends DynamicComponent<Types.ImageNode> {\n readonly url = input<Primitives.StringValue | null>(null);\n readonly usageHint = input<Types.ResolvedImage['usageHint'] | null>(null);\n readonly fit = input<Types.ResolvedImage['fit'] | null>(null);\n readonly altText = input<Primitives.StringValue | null>(null);\n\n protected readonly resolvedUrl = computed(() => this.resolvePrimitive(this.url()));\n protected readonly resolvedAltText = computed(() => this.resolvePrimitive(this.altText()) || '');\n\n protected classes = computed(() => {\n const usageHint = this.usageHint();\n\n return Styles.merge(\n this.theme.components.Image.all,\n usageHint ? this.theme.components.Image[usageHint] : {},\n );\n });\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { Types } from '../types';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Renderer } from '../rendering/renderer';\n\n@Component({\n selector: 'a2ui-list',\n imports: [Renderer],\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[attr.direction]': 'direction()',\n },\n styles: `\n :host {\n display: block;\n flex: var(--weight);\n min-height: 0;\n }\n\n :host([direction='vertical']) section {\n display: flex;\n flex-direction: column;\n max-height: 100%;\n overflow-y: auto;\n }\n\n :host([direction='horizontal']) section {\n display: flex;\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: none;\n }\n\n .a2ui-list-item {\n display: flex;\n cursor: pointer;\n box-sizing: border-box;\n }\n `,\n template: `\n <section [class]=\"theme.components.List\" [style]=\"theme.additionalStyles?.List\">\n @for (child of children() ?? component().properties.children; track child?.id ?? child) {\n @if (child) {\n <div class=\"a2ui-list-item\">\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"child\" />\n </div>\n }\n }\n </section>\n `,\n})\nexport class List extends DynamicComponent<Types.ListNode> {\n readonly alignment = input<Types.ResolvedList['alignment']>('stretch');\n readonly direction = input<Types.ResolvedList['direction']>('vertical');\n readonly children = input<Types.AnyComponentNode[] | null>(null);\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Renderer } from '../rendering/renderer';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-modal',\n imports: [Renderer],\n template: `\n <div class=\"a2ui-modal-entry-point\" (click)=\"openModal()\">\n @if (entryPointChild()) {\n <ng-container\n a2ui-renderer\n [surfaceId]=\"surfaceId()!\"\n [component]=\"entryPointChild()!\"\n />\n }\n </div>\n\n @if (isOpen()) {\n <div [class]=\"theme.components.Modal.backdrop\" (click)=\"closeModal()\">\n <div [class]=\"theme.components.Modal.element\" (click)=\"$event.stopPropagation()\">\n @if (contentChild()) {\n <ng-container\n a2ui-renderer\n [surfaceId]=\"surfaceId()!\"\n [component]=\"contentChild()!\"\n />\n }\n </div>\n </div>\n }\n `,\n styles: `\n :host {\n display: inline-block;\n }\n .a2ui-modal-entry-point {\n cursor: pointer;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Modal extends DynamicComponent<Types.ModalNode> {\n readonly entryPointChild = input.required<Types.AnyComponentNode>();\n readonly contentChild = input.required<Types.AnyComponentNode>();\n\n protected readonly isOpen = signal(false);\n\n protected openModal() {\n this.isOpen.set(true);\n }\n\n protected closeModal() {\n this.isOpen.set(false);\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-multiple-choice',\n template: `\n <div\n [class]=\"theme.components.MultipleChoice.container\"\n [style]=\"theme.additionalStyles?.MultipleChoice\"\n >\n <label [class]=\"theme.components.MultipleChoice.label\" [for]=\"selectId\">\n {{ resolvedLabel() }}\n </label>\n <select\n [class]=\"theme.components.MultipleChoice.element\"\n [id]=\"selectId\"\n [value]=\"resolvedSelections()[0] || ''\"\n (change)=\"onChange($event)\"\n >\n @for (option of resolvedOptions(); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MultipleChoice extends DynamicComponent<Types.MultipleChoiceNode> {\n readonly label = input<Types.StringValue | null>(null);\n readonly options = input.required<{ label: Types.StringValue; value: string }[]>();\n readonly selections = input.required<Types.AnyComponentNode | null>();\n\n protected readonly selectId = super.getUniqueId('a2ui-multiple-choice');\n\n protected readonly resolvedLabel = computed(() => this.resolvePrimitive(this.label()));\n\n protected readonly resolvedOptions = computed(() =>\n this.options().map((opt) => ({\n label: this.resolvePrimitive(opt.label),\n value: opt.value,\n })),\n );\n\n protected readonly resolvedSelections = computed(() => {\n const s = this.selections();\n if (s && typeof s === 'object' && 'literalArray' in s) {\n return (s as any).literalArray as string[];\n }\n return [];\n });\n\n onChange(event: Event) {\n const value = (event.target as HTMLSelectElement).value;\n const selectionsNode = this.selections();\n if (selectionsNode && typeof selectionsNode === 'object' && 'path' in selectionsNode && selectionsNode.path) {\n // Update the local data model directly to ensure immediate UI feedback and avoid unnecessary network requests.\n this.processor.processMessages([{\n dataModelUpdate: {\n surfaceId: this.surfaceId()!,\n path: this.processor.resolvePath(selectionsNode.path as string, this.component().dataContextPath),\n contents: [{ key: '.', valueString: JSON.stringify({ literalArray: [value] }) }],\n },\n }]);\n } else {\n this.handleAction('change', { value });\n }\n }\n\n private handleAction(name: string, context: Record<string, unknown>) {\n super.sendAction({\n name,\n context: Object.entries(context).map(([key, val]) => ({\n key,\n value: typeof val === 'number' ? { literalNumber: val } : { literalString: String(val) },\n })),\n });\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Renderer } from '../rendering/renderer';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-row',\n imports: [Renderer],\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[attr.alignment]': 'alignment()',\n '[attr.distribution]': 'distribution()',\n },\n styles: `\n :host {\n display: flex;\n flex: var(--weight);\n }\n\n section {\n display: flex;\n flex-direction: row;\n width: 100%;\n min-height: 100%;\n box-sizing: border-box;\n }\n\n .align-start {\n align-items: start;\n }\n\n .align-center {\n align-items: center;\n }\n\n .align-end {\n align-items: end;\n }\n\n .align-stretch {\n align-items: stretch;\n }\n\n .distribute-start {\n justify-content: start;\n }\n\n .distribute-center {\n justify-content: center;\n }\n\n .distribute-end {\n justify-content: end;\n }\n\n .distribute-spaceBetween {\n justify-content: space-between;\n }\n\n .distribute-spaceAround {\n justify-content: space-around;\n }\n\n .distribute-spaceEvenly {\n justify-content: space-evenly;\n }\n `,\n template: `\n <section [class]=\"classes()\" [style]=\"theme.additionalStyles?.Row\">\n @for (child of children() ?? component().properties.children; track child?.id ?? child) {\n @if (child) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"child\" />\n }\n }\n </section>\n `,\n})\nexport class Row extends DynamicComponent<Types.RowNode> {\n readonly alignment = input<Types.ResolvedRow['alignment']>('stretch');\n readonly distribution = input<Types.ResolvedRow['distribution']>('start');\n readonly children = input<Types.AnyComponentNode[] | null>();\n\n protected readonly classes = computed(() => ({\n ...this.theme.components.Row,\n [`align-${this.alignment()}`]: true,\n [`distribute-${this.distribution()}`]: true,\n }));\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { Types } from '../types';\nimport { DynamicComponent } from '../rendering/dynamic-component';\n\n@Component({\n selector: 'a2ui-slider',\n template: `\n <div [class]=\"theme.components.Slider.container\" [style]=\"theme.additionalStyles?.Slider\">\n @if (resolvedLabel()) {\n <label [class]=\"theme.components.Slider.label\" [id]=\"labelId\">{{ resolvedLabel() }}</label>\n }\n <input\n type=\"range\"\n [class]=\"theme.components.Slider.element\"\n [id]=\"inputId\"\n [attr.aria-labelledby]=\"labelId\"\n [min]=\"minValue()\"\n [max]=\"maxValue()\"\n [value]=\"resolvedValue() ?? 0\"\n (input)=\"onInput($event)\"\n />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Slider extends DynamicComponent<Types.SliderNode> {\n readonly label = input<Types.StringValue | null>(null);\n readonly value = input.required<Types.NumberValue | null>();\n readonly minValue = input<number>(0);\n readonly maxValue = input<number>(100);\n\n protected readonly inputId = super.getUniqueId('a2ui-slider-input');\n protected readonly labelId = super.getUniqueId('a2ui-slider-label');\n\n protected resolvedLabel = computed(() => super.resolvePrimitive(this.label()));\n protected resolvedValue = computed(() => super.resolvePrimitive(this.value()));\n\n onInput(event: Event) {\n const value = Number((event.target as HTMLInputElement).value);\n const valueNode = this.value();\n if (valueNode && typeof valueNode === 'object' && 'path' in valueNode && valueNode.path) {\n // Update the local data model directly to ensure immediate UI feedback and avoid unnecessary network requests.\n this.processor.processMessages([{\n dataModelUpdate: {\n surfaceId: this.surfaceId()!,\n path: this.processor.resolvePath(valueNode.path as string, this.component().dataContextPath),\n contents: [{ key: '.', valueNumber: value }],\n },\n }]);\n } else {\n this.handleAction('change', { value });\n }\n }\n\n private handleAction(name: string, context: Record<string, unknown>) {\n super.sendAction({\n name,\n context: Object.entries(context).map(([key, val]) => ({\n key,\n value: typeof val === 'number' ? { literalNumber: val } : { literalString: String(val) },\n })),\n });\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Renderer } from '../rendering/renderer';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-tabs',\n imports: [Renderer],\n template: `\n <div [class]=\"theme.components.Tabs.container\" [style]=\"theme.additionalStyles?.Tabs\">\n <div [class]=\"theme.components.Tabs.controls.all\">\n @for (item of tabItems(); track item.child; let i = $index) {\n <button\n [class]=\"selectedIndex() === i ? theme.components.Tabs.controls.selected : {}\"\n (click)=\"selectTab(i)\"\n >\n {{ resolvePrimitive(item.title) }}\n </button>\n }\n </div>\n <div class=\"a2ui-tabs-content\">\n @if (tabItems()[selectedIndex()]; as selectedTab) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"selectedTab.child\" />\n }\n </div>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n .a2ui-tabs-content {\n flex: 1;\n min-height: 0;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tabs extends DynamicComponent<Types.TabsNode> {\n readonly tabItems = input.required<Types.ResolvedTabs['tabItems']>();\n protected readonly selectedIndex = signal(0);\n\n protected selectTab(index: number) {\n this.selectedIndex.set(index);\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport * as Primitives from '@a2ui/web_core/types/primitives';\nimport * as Styles from '@a2ui/web_core/styles/index';\nimport { Types } from '../types';\nimport { MarkdownRenderer } from '../data/markdown';\n\ninterface HintedStyles {\n h1: Record<string, string>;\n h2: Record<string, string>;\n h3: Record<string, string>;\n h4: Record<string, string>;\n h5: Record<string, string>;\n body: Record<string, string>;\n caption: Record<string, string>;\n}\n\n@Component({\n selector: 'a2ui-text',\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n <section\n [class]=\"classes()\"\n [style]=\"additionalStyles()\"\n [innerHTML]=\"resolvedText() | async\"\n ></section>\n `,\n encapsulation: ViewEncapsulation.None,\n imports: [AsyncPipe],\n styles: `\n a2ui-text {\n display: block;\n flex: var(--weight);\n }\n\n a2ui-text h1,\n a2ui-text h2,\n a2ui-text h3,\n a2ui-text h4,\n a2ui-text h5 {\n line-height: inherit;\n font: inherit;\n }\n `,\n})\nexport class Text extends DynamicComponent<Types.TextNode> {\n private markdownRenderer = inject(MarkdownRenderer);\n readonly text = input.required<Primitives.StringValue | null>();\n readonly usageHint = input<Types.ResolvedText['usageHint'] | null>(null);\n\n protected resolvedText = computed(() => {\n const usageHint = this.usageHint();\n let value = super.resolvePrimitive(this.text());\n\n if (value == null) {\n return Promise.resolve('');\n }\n\n switch (usageHint) {\n case 'h1':\n value = `# ${value}`;\n break;\n case 'h2':\n value = `## ${value}`;\n break;\n case 'h3':\n value = `### ${value}`;\n break;\n case 'h4':\n value = `#### ${value}`;\n break;\n case 'h5':\n value = `##### ${value}`;\n break;\n case 'caption':\n value = `*${value}*`;\n break;\n default:\n value = String(value);\n break;\n }\n\n return this.markdownRenderer.render(value, {\n tagClassMap: Styles.appendToAll(this.theme.markdown, ['ol', 'ul', 'li'], {}),\n });\n });\n\n protected classes = computed(() => {\n const usageHint = this.usageHint();\n\n return Styles.merge(\n this.theme.components.Text.all,\n usageHint ? this.theme.components.Text[usageHint] : {},\n );\n });\n\n protected additionalStyles = computed(() => {\n const usageHint = this.usageHint();\n const styles = this.theme.additionalStyles?.Text;\n\n if (!styles) {\n return null;\n }\n\n let additionalStyles: Record<string, string> = {};\n\n if (this.areHintedStyles(styles)) {\n additionalStyles = (styles as any)[usageHint ?? 'body'] || {};\n } else if (typeof styles === 'object' && styles !== null) {\n additionalStyles = styles as Record<string, string>;\n }\n\n return additionalStyles;\n });\n\n private areHintedStyles(styles: unknown): styles is HintedStyles {\n if (typeof styles !== 'object' || !styles || Array.isArray(styles)) {\n return false;\n }\n\n const expected = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'caption', 'body'];\n return expected.every((v) => v in styles);\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-text-field',\n template: `\n <div [class]=\"theme.components.TextField.container\" [style]=\"theme.additionalStyles?.TextField\">\n <label [class]=\"theme.components.TextField.label\" [for]=\"inputId\">\n {{ resolvedLabel() }}\n </label>\n <input\n [type]=\"htmlInputType()\"\n [class]=\"theme.components.TextField.element\"\n [id]=\"inputId\"\n [value]=\"resolvedText() ?? ''\"\n (input)=\"onInput($event)\"\n />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextField extends DynamicComponent<Types.TextFieldNode> {\n readonly label = input.required<Types.StringValue | null>();\n readonly text = input<Types.StringValue | null>(null);\n readonly textFieldType = input<Types.ResolvedTextField['textFieldType']>('shortText');\n\n protected readonly inputId = super.getUniqueId('a2ui-text-field');\n\n protected resolvedLabel = computed(() => super.resolvePrimitive(this.label()));\n protected resolvedText = computed(() => super.resolvePrimitive(this.text()));\n\n protected htmlInputType = computed(() => {\n switch (this.textFieldType()) {\n case 'number':\n return 'number';\n case 'date':\n return 'date';\n default:\n return 'text';\n }\n });\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n const textNode = this.text();\n if (textNode && typeof textNode === 'object' && 'path' in textNode && textNode.path) {\n // Update the local data model directly to ensure immediate UI feedback and avoid unnecessary network requests.\n this.processor.processMessages([{\n dataModelUpdate: {\n surfaceId: this.surfaceId()!,\n path: this.processor.resolvePath(textNode.path as string, this.component().dataContextPath),\n contents: [{ key: '.', valueString: value }],\n },\n }]);\n } else {\n this.handleAction('input', { value });\n }\n }\n\n private handleAction(name: string, context: Record<string, unknown>) {\n super.sendAction({\n name,\n context: Object.entries(context).map(([key, val]) => ({\n key,\n value: typeof val === 'number' ? { literalNumber: val } : { literalString: String(val) },\n })),\n });\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-video',\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n @let resolvedUrl = this.resolvedUrl();\n\n @if (resolvedUrl) {\n <section [class]=\"theme.components.Video\" [style]=\"theme.additionalStyles?.Video\">\n <video controls [src]=\"resolvedUrl\"></video>\n </section>\n }\n `,\n styles: `\n :host {\n display: block;\n flex: var(--weight);\n min-height: 0;\n overflow: auto;\n }\n\n video {\n display: block;\n width: 100%;\n box-sizing: border-box;\n }\n `,\n})\nexport class Video extends DynamicComponent<Types.VideoNode> {\n readonly url = input.required<Types.StringValue | null>();\n protected readonly resolvedUrl = computed(() => this.resolvePrimitive(this.url()));\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Catalog } from '../rendering/catalog';\n\n// Components\nimport { AudioPlayer } from '../components/audio';\nimport { Button } from '../components/button';\nimport { Card } from '../components/card';\nimport { Checkbox } from '../components/checkbox';\nimport { Column } from '../components/column';\nimport { DateTimeInput } from '../components/datetime-input';\nimport { Divider } from '../components/divider';\nimport { Icon } from '../components/icon';\nimport { Image } from '../components/image';\nimport { List } from '../components/list';\nimport { Modal } from '../components/modal';\nimport { MultipleChoice } from '../components/multiple-choice';\nimport { Row } from '../components/row';\nimport { Slider } from '../components/slider';\nimport { Tabs } from '../components/tabs';\nimport { Text } from '../components/text';\nimport { TextField } from '../components/text-field';\nimport { Video } from '../components/video';\n\nexport const DEFAULT_CATALOG: Catalog = {\n AudioPlayer: () => AudioPlayer,\n Button: () => Button,\n Card: () => Card,\n CheckBox: () => Checkbox,\n Column: () => Column,\n DateTimeInput: () => DateTimeInput,\n Divider: () => Divider,\n Icon: () => Icon,\n Image: () => Image,\n List: () => List,\n Modal: () => Modal,\n MultipleChoice: () => MultipleChoice,\n Row: () => Row,\n Slider: () => Slider,\n Tabs: () => Tabs,\n Text: () => Text,\n TextField: () => TextField,\n Video: () => Video,\n};\n\nexport function registerStandardComponents(catalog: Catalog) {\n for (const [key, value] of Object.entries(DEFAULT_CATALOG)) {\n catalog[key] = value;\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { MessageProcessor } from '../data';\nimport { Renderer } from '../rendering/renderer';\nimport { Types } from '../types';\n\n@Component({\n selector: 'a2ui-surface',\n imports: [Renderer],\n template: `\n @if (rootComponent()) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()\" [component]=\"rootComponent()!\" />\n }\n `,\n styles: `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Surface {\n private readonly processor = inject(MessageProcessor);\n readonly surfaceId = input.required<Types.SurfaceID>();\n readonly surfaceInput = input<Types.Surface | null>(null, { alias: 'surface' });\n\n protected readonly surface = computed(() => {\n this.processor.version(); // Track dependency on in-place mutations\n return this.surfaceInput() ?? this.processor.getSurfaces().get(this.surfaceId()) ?? null;\n });\n\n protected readonly rootComponent = computed(() => {\n this.processor.version(); // Track dependency on in-place mutations\n return this.surface()?.componentTree ?? null;\n });\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './catalog';\nexport * from './dynamic-component';\nexport * from './renderer';\nexport * from './theming';\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { Catalog, Theme } from './rendering';\nimport { Types } from './types';\n\nexport function provideA2UI(config: {\n catalog: Catalog;\n theme: Types.Theme;\n}): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: Catalog, useValue: config.catalog },\n {\n provide: Theme,\n useFactory: () => {\n const theme = new Theme();\n theme.update(config.theme);\n return theme;\n },\n },\n ]);\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as WebCore from '@a2ui/web_core/v0_8';\n\n/**\n * Centralized namespace for v0.8 renderer types.\n * Standardizes on the `...Node` suffix for component types and provides\n * resolved variants for property binding.\n */\nexport namespace Types {\n // Messages & Infrastructure\n export type Action = WebCore.Action;\n export type FunctionCall = unknown; // v0.8 might not have FunctionCall or structure differs\n export type SurfaceID = string;\n export type StringValue = WebCore.StringValue;\n export type BooleanValue = WebCore.BooleanValue;\n export type NumberValue = WebCore.NumberValue;\n export type Surface = WebCore.Surface;\n\n export type A2UIClientEventMessage = WebCore.A2UIClientEventMessage;\n export type ClientToServerMessage = A2UIClientEventMessage;\n export type ServerToClientMessage = WebCore.ServerToClientMessage;\n\n // Components & Interfaces\n export interface Component<P = Record<string, unknown>> {\n id: string;\n type: string;\n properties: P;\n }\n\n export type AnyComponentNode = WebCore.AnyComponentNode;\n export type CustomNode = WebCore.CustomNode;\n\n export type Theme = WebCore.Theme;\n\n // Node Types (Explicit suffix)\n export type RowNode = WebCore.RowNode;\n export type ColumnNode = WebCore.ColumnNode;\n export type TextNode = WebCore.TextNode;\n export type ListNode = WebCore.ListNode;\n export type ImageNode = WebCore.ImageNode;\n export type IconNode = WebCore.IconNode;\n export type VideoNode = WebCore.VideoNode;\n export type AudioPlayerNode = WebCore.AudioPlayerNode;\n export type ButtonNode = WebCore.ButtonNode;\n export type DividerNode = WebCore.DividerNode;\n export type MultipleChoiceNode = WebCore.MultipleChoiceNode;\n export type TextFieldNode = WebCore.TextFieldNode;\n export type CheckboxNode = WebCore.CheckboxNode;\n export type SliderNode = WebCore.SliderNode;\n export type DateTimeInputNode = WebCore.DateTimeInputNode;\n export type TabsNode = WebCore.TabsNode;\n export type ModalNode = WebCore.ModalNode;\n export type CardNode = WebCore.CardNode;\n\n // Resolved Property Types\n export type ResolvedRow = WebCore.ResolvedRow;\n export type ResolvedColumn = WebCore.ResolvedColumn;\n export type ResolvedText = WebCore.ResolvedText;\n export type ResolvedList = WebCore.ResolvedList;\n export type ResolvedImage = WebCore.ResolvedImage;\n export type ResolvedIcon = WebCore.ResolvedIcon;\n export type ResolvedVideo = WebCore.ResolvedVideo;\n export type ResolvedAudioPlayer = WebCore.ResolvedAudioPlayer;\n export type ResolvedButton = WebCore.ResolvedButton;\n export type ResolvedDivider = WebCore.ResolvedDivider;\n export type ResolvedMultipleChoice = WebCore.ResolvedMultipleChoice;\n export type ResolvedTextField = WebCore.ResolvedTextField;\n export type ResolvedCheckbox = WebCore.ResolvedCheckbox;\n export type ResolvedSlider = WebCore.ResolvedSlider;\n export type ResolvedDateTimeInput = WebCore.ResolvedDateTimeInput;\n export type ResolvedTabs = WebCore.ResolvedTabs;\n export type ResolvedModal = WebCore.ResolvedModal;\n export type ResolvedCard = WebCore.ResolvedCard;\n\n // Markdown\n export type MarkdownRenderer = WebCore.MarkdownRenderer;\n export type MarkdownRendererOptions = WebCore.MarkdownRendererOptions;\n}\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './catalog/index';\nexport * from './components/audio';\nexport * from './components/button';\nexport * from './components/card';\nexport * from './components/checkbox';\nexport * from './components/column';\nexport * from './components/datetime-input';\nexport * from './components/divider';\nexport * from './components/icon';\nexport * from './components/image';\nexport * from './components/list';\nexport * from './components/modal';\nexport * from './components/multiple-choice';\nexport * from './components/row';\nexport * from './components/slider';\nexport * from './components/surface';\nexport * from './components/tabs';\nexport * from './components/text-field';\nexport * from './components/text';\nexport * from './components/video';\nexport * from './config';\nexport * from './data/index';\nexport * from './rendering/index';\nexport * from './types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"a2ui-angular-src-v0_8.mjs","sources":["../../src/v0_8/data/processor.ts","../../src/v0_8/data/types.ts","../../src/v0_8/data/markdown.ts","../../src/v0_8/data/index.ts","../../src/v0_8/rendering/theming.ts","../../src/v0_8/rendering/dynamic-component.ts","../../src/v0_8/components/audio.ts","../../src/v0_8/rendering/catalog.ts","../../src/v0_8/rendering/renderer.ts","../../src/v0_8/components/button.ts","../../src/v0_8/components/card.ts","../../src/v0_8/components/checkbox.ts","../../src/v0_8/components/column.ts","../../src/v0_8/components/datetime-input.ts","../../src/v0_8/components/divider.ts","../../src/v0_8/components/icon.ts","../../src/v0_8/components/image.ts","../../src/v0_8/components/list.ts","../../src/v0_8/components/modal.ts","../../src/v0_8/components/multiple-choice.ts","../../src/v0_8/components/row.ts","../../src/v0_8/components/slider.ts","../../src/v0_8/components/tabs.ts","../../src/v0_8/components/text.ts","../../src/v0_8/components/text-field.ts","../../src/v0_8/components/video.ts","../../src/v0_8/catalog/index.ts","../../src/v0_8/components/surface.ts","../../src/v0_8/rendering/index.ts","../../src/v0_8/config.ts","../../src/v0_8/types.ts","../../src/v0_8/public-api.ts","../../src/v0_8/a2ui-angular-src-v0_8.ts"],"sourcesContent":["/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, signal} from '@angular/core';\nimport {Subject, Observable} from 'rxjs';\nimport * as WebCore from '@a2ui/web_core/v0_8';\n\nimport type {A2UIClientEventMessage, AnyComponentNode, ServerToClientMessage} from '../types';\n\nexport interface A2UIClientEvent {\n message: A2UIClientEventMessage;\n completion: Subject<ServerToClientMessage[]>;\n}\n\nexport type DispatchedEvent = A2UIClientEvent;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageProcessor {\n private baseProcessor: WebCore.A2uiMessageProcessor;\n\n private readonly eventsSubject = new Subject<A2UIClientEvent>();\n readonly events: Observable<A2UIClientEvent> = this.eventsSubject.asObservable();\n // Signal to track the version of the data in the MessageProcessor. Since the base processor updates\n // surfaces in-place (mutating the Map), we use this to force Angular's change detection to\n // re-evaluate any components or effects that depend on getSurfaces().\n private readonly versionSignal = signal(0);\n readonly version = this.versionSignal.asReadonly();\n\n constructor() {\n this.baseProcessor = new WebCore.A2uiMessageProcessor();\n }\n\n /**\n * Increments the version signal to notify Angular that the data model has changed.\n * This should be called after any update to the underlying base processor's surfaces.\n */\n private notify() {\n this.versionSignal.update(v => v + 1);\n }\n\n processMessages(messages: ServerToClientMessage[]) {\n this.baseProcessor.processMessages(messages as WebCore.ServerToClientMessage[]);\n this.notify();\n }\n\n dispatch(message: A2UIClientEventMessage): Promise<ServerToClientMessage[]> {\n const completion = new Subject<ServerToClientMessage[]>();\n const promise = new Promise<ServerToClientMessage[]>((resolve, reject) => {\n completion.subscribe({\n next: msgs => resolve(msgs),\n error: err => reject(err),\n });\n });\n\n this.eventsSubject.next({message, completion});\n return promise;\n }\n\n getData(node: AnyComponentNode, path: string, surfaceId?: string | null): unknown {\n return this.baseProcessor.getData(\n node as WebCore.AnyComponentNode,\n path,\n surfaceId ?? undefined,\n );\n }\n\n setData(node: AnyComponentNode | null, path: string, value: any, surfaceId: string) {\n this.baseProcessor.setData(node as WebCore.AnyComponentNode | null, path, value, surfaceId);\n this.notify();\n }\n\n resolvePath(path: string, dataContextPath?: string): string {\n return this.baseProcessor.resolvePath(path, dataContextPath);\n }\n\n getSurfaces(): ReadonlyMap<string, WebCore.Surface> {\n this.versionSignal(); // Track dependency\n const allSurfaces = this.baseProcessor.getSurfaces();\n const readySurfaces = new Map<string, WebCore.Surface>();\n for (const [id, surface] of allSurfaces.entries()) {\n if (surface.rootComponentId != null) {\n readySurfaces.set(id, surface);\n }\n }\n return readySurfaces;\n }\n\n clearSurfaces() {\n this.baseProcessor.clearSurfaces();\n this.notify();\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {ServerToClientMessage} from '../types';\n\nexport interface A2TextPayload {\n kind: 'text';\n text: string;\n}\n\nexport interface A2DataPayload {\n kind: 'data';\n data: ServerToClientMessage;\n}\n\nexport type A2AServerPayload = Array<A2DataPayload | A2TextPayload> | {error: string};\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport type {MarkdownRenderer as MarkdownRendererType, MarkdownRendererOptions} from '../types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport abstract class MarkdownRenderer {\n abstract render(markdown: string, options?: MarkdownRendererOptions): Promise<string>;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DefaultMarkdownRenderer extends MarkdownRenderer {\n private static warningLogged = false;\n\n override async render(markdown: string, options?: MarkdownRendererOptions): Promise<string> {\n try {\n // @ts-ignore - optional peer dependency\n const {renderMarkdown} = await import('@a2ui/markdown-it');\n return await renderMarkdown(markdown, options);\n } catch (e) {\n if (!DefaultMarkdownRenderer.warningLogged) {\n console.warn(\n '[DefaultMarkdownRenderer] Failed to load optional `@a2ui/markdown-it` renderer. Using fallback regex.',\n );\n DefaultMarkdownRenderer.warningLogged = true;\n }\n // Basic implementation for v0.8\n return markdown;\n }\n }\n}\n\nexport function provideMarkdownRenderer(renderFn?: MarkdownRendererType) {\n if (renderFn) {\n return {\n provide: MarkdownRenderer,\n useValue: {\n render: renderFn,\n },\n };\n }\n return {provide: MarkdownRenderer, useClass: DefaultMarkdownRenderer};\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './processor';\nexport * from './types';\nexport {provideMarkdownRenderer} from './markdown';\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport type {Theme as ThemeType} from '../types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class Theme {\n components: ThemeType['components'] = {} as ThemeType['components'];\n elements: ThemeType['elements'] = {} as ThemeType['elements'];\n markdown: ThemeType['markdown'] = {\n p: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n ul: [],\n ol: [],\n li: [],\n a: [],\n strong: [],\n em: [],\n };\n additionalStyles?: ThemeType['additionalStyles'];\n\n update(theme: ThemeType) {\n this.components = theme.components;\n this.elements = theme.elements;\n this.markdown = theme.markdown;\n this.additionalStyles = theme.additionalStyles;\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Directive, inject, input} from '@angular/core';\nimport {MessageProcessor} from '../data';\nimport {Theme} from './theming';\nimport type {\n A2UIClientEventMessage,\n Action,\n AnyComponentNode,\n BooleanValue,\n NumberValue,\n ServerToClientMessage,\n StringValue,\n SurfaceID,\n} from '../types';\n\nlet idCounter = 0;\n\n@Directive({\n host: {\n '[style.--weight]': 'weight()',\n },\n})\nexport abstract class DynamicComponent<T extends AnyComponentNode = AnyComponentNode> {\n protected readonly processor = inject(MessageProcessor);\n protected readonly theme = inject(Theme);\n\n readonly surfaceId = input.required<SurfaceID | null>();\n readonly component = input.required<T>();\n readonly weight = input.required<string | number>();\n\n protected sendAction(action: Action): Promise<ServerToClientMessage[]> {\n const component = this.component();\n const surfaceId = this.surfaceId() ?? undefined;\n const context: Record<string, unknown> = {};\n\n if (action.context) {\n for (const item of action.context) {\n if (item.value.literalBoolean !== undefined) {\n context[item.key] = item.value.literalBoolean;\n } else if (item.value.literalNumber !== undefined) {\n context[item.key] = item.value.literalNumber;\n } else if (item.value.literalString !== undefined) {\n context[item.key] = item.value.literalString;\n } else if (item.value.path) {\n const path = this.processor.resolvePath(item.value.path, component.dataContextPath);\n const value = this.processor.getData(component, path, surfaceId);\n context[item.key] = value;\n }\n }\n }\n\n const message: A2UIClientEventMessage = {\n userAction: {\n name: action.name,\n sourceComponentId: component.id,\n surfaceId: surfaceId!,\n timestamp: new Date().toISOString(),\n context,\n },\n };\n\n return this.processor.dispatch(message);\n }\n\n protected resolvePrimitive(value: StringValue | null): string | null;\n protected resolvePrimitive(value: BooleanValue | null): boolean | null;\n protected resolvePrimitive(value: NumberValue | null): number | null;\n protected resolvePrimitive(value: StringValue | BooleanValue | NumberValue | null) {\n const component = this.component();\n const surfaceId = this.surfaceId();\n\n if (!value || typeof value !== 'object') {\n return null;\n } else if ('literal' in value && value.literal != null) {\n return value.literal;\n } else if (value.path) {\n return this.processor.getData(component, value.path, surfaceId ?? undefined) as any;\n } else if ('literalString' in value) {\n return value.literalString;\n } else if ('literalNumber' in value) {\n return value.literalNumber;\n } else if ('literalBoolean' in value) {\n return value.literalBoolean;\n }\n\n return null;\n }\n\n protected getUniqueId(prefix: string) {\n return `${prefix}-${idCounter++}`;\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport type {AudioPlayerNode, StringValue} from '../types';\n\n@Component({\n selector: 'a2ui-audio',\n template: `\n <audio controls [src]=\"resolvedUrl()\" [style]=\"theme.additionalStyles?.AudioPlayer\"></audio>\n `,\n styles: `\n :host {\n display: flex;\n }\n audio {\n width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AudioPlayer extends DynamicComponent<AudioPlayerNode> {\n readonly url = input.required<StringValue | null>();\n protected readonly resolvedUrl = computed(() => this.resolvePrimitive(this.url()));\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Binding, InjectionToken, Type} from '@angular/core';\nimport {DynamicComponent} from './dynamic-component';\nimport type {AnyComponentNode} from '../types';\n\nexport type CatalogLoader = () =>\n | Promise<Type<DynamicComponent<any>>>\n | Type<DynamicComponent<any>>;\n\nexport type CatalogEntry<T extends AnyComponentNode> =\n | CatalogLoader\n | {\n type: CatalogLoader;\n bindings: (data: T) => Binding[];\n };\n\nexport interface Catalog {\n [key: string]: CatalogEntry<AnyComponentNode>;\n}\n\nexport const Catalog = new InjectionToken<Catalog>('Catalog');\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Directive,\n effect,\n inject,\n input,\n ViewContainerRef,\n Type,\n PLATFORM_ID,\n ComponentRef,\n} from '@angular/core';\nimport {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {structuralStyles} from '@a2ui/web_core/styles/index';\nimport {Catalog} from './catalog';\nimport {MessageProcessor} from '../data';\nimport type {AnyComponentNode, SurfaceID} from '../types';\nimport {DynamicComponent} from './dynamic-component';\n\n@Directive({\n selector: '[a2ui-renderer]',\n standalone: true,\n})\nexport class Renderer {\n private static hasInsertedStyles = false;\n\n private readonly catalog = inject(Catalog);\n private readonly container = inject(ViewContainerRef);\n private readonly processor: MessageProcessor = inject(MessageProcessor);\n\n readonly surfaceId = input.required<SurfaceID>();\n readonly component = input.required<AnyComponentNode>();\n\n private currentId: string | null = null;\n private currentType: string | null = null;\n private currentComponentRef: ComponentRef<DynamicComponent<AnyComponentNode>> | null = null;\n\n constructor() {\n const platformId = inject(PLATFORM_ID);\n const document = inject(DOCUMENT);\n\n if (!Renderer.hasInsertedStyles && isPlatformBrowser(platformId)) {\n const styleElement = document.createElement('style');\n styleElement.textContent = structuralStyles;\n document.head.appendChild(styleElement);\n Renderer.hasInsertedStyles = true;\n }\n\n effect(() => {\n // Explicitly depend on the MessageProcessor's version signal. This ensures that the effect re-runs\n // whenever data model changes occur, even if the node's object reference remains identical\n // (as in the case of in-place mutations from local updates).\n this.processor.version();\n\n let node = this.component();\n const surfaceId = this.surfaceId();\n\n // Handle v0.8 wrapped component format\n if (!node.type && (node as any).component) {\n const wrapped = (node as any).component;\n const type = Object.keys(wrapped)[0];\n if (type) {\n node = {\n ...node,\n type: type as any,\n properties: wrapped[type],\n };\n }\n }\n\n const id = node.id;\n const type = node.type;\n\n // Focus Loss Prevention:\n // If we have an existing component and its unique identity (ID and Type) hasn't changed,\n // we update its @Input() values in-place. This preserves the underlying DOM element,\n // maintaining focus, text selection, and cursor position.\n if (this.currentComponentRef && this.currentId === id && this.currentType === type) {\n this.updateInputs(this.currentComponentRef, node, surfaceId);\n return;\n }\n\n // Otherwise, clear and re-create the component because its identity has changed.\n const container = this.container;\n container.clear();\n this.currentComponentRef = null;\n this.currentId = id;\n this.currentType = type;\n\n const config = this.catalog[node.type];\n if (!config) {\n console.error(`Unknown component type: ${node.type}`);\n return;\n }\n\n this.render(container, node, surfaceId, config);\n });\n }\n\n private render(\n container: ViewContainerRef,\n node: AnyComponentNode,\n surfaceId: string,\n config: any,\n ) {\n const componentTypeOrPromise = this.resolveComponentType(config);\n\n if (componentTypeOrPromise instanceof Promise) {\n componentTypeOrPromise.then(componentType => {\n // Ensure we are still supposed to render this component\n if (this.currentId === node.id && this.currentType === node.type) {\n const componentRef = container.createComponent(componentType) as ComponentRef<\n DynamicComponent<AnyComponentNode>\n >;\n this.currentComponentRef = componentRef;\n this.updateInputs(componentRef, node, surfaceId);\n }\n });\n } else if (componentTypeOrPromise) {\n const componentRef = container.createComponent(componentTypeOrPromise) as ComponentRef<\n DynamicComponent<AnyComponentNode>\n >;\n this.currentComponentRef = componentRef;\n this.updateInputs(componentRef, node, surfaceId);\n }\n }\n\n private resolveComponentType(config: any): Type<unknown> | Promise<Type<unknown>> | null {\n if (typeof config === 'function') {\n return config();\n } else if (typeof config === 'object' && config !== null) {\n if (typeof config.type === 'function') {\n return config.type();\n } else {\n return config.type;\n }\n }\n return null;\n }\n\n /**\n * Updates the inputs of an existing component instance with the latest data from the node.\n * This is called during component reuse to keep the UI in sync without losing DOM state (like focus).\n */\n private updateInputs(\n componentRef: ComponentRef<DynamicComponent<AnyComponentNode>>,\n node: AnyComponentNode,\n surfaceId: string,\n ) {\n componentRef.setInput('surfaceId', surfaceId);\n componentRef.setInput('component', node);\n componentRef.setInput('weight', node.weight ?? 0);\n\n if (node.properties) {\n const props = node.properties as Record<string, unknown>;\n for (const [key, value] of Object.entries(props)) {\n try {\n componentRef.setInput(key, value);\n } catch (e) {\n console.warn(\n `[Renderer] Property \"${key}\" could not be set on component ${node.type}. If this property is required by the specification, ensure the component declares it as an input.`,\n );\n }\n }\n }\n componentRef.changeDetectorRef.markForCheck();\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, input} from '@angular/core';\nimport type {ButtonNode, Action, AnyComponentNode} from '../types';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport {Renderer} from '../rendering/renderer';\n\n@Component({\n selector: 'a2ui-button',\n imports: [Renderer],\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n <button\n [class]=\"theme.components.Button\"\n [style]=\"theme.additionalStyles?.Button\"\n (click)=\"handleClick()\"\n >\n @if (child()) {\n <ng-container\n a2ui-renderer\n [surfaceId]=\"surfaceId()!\"\n [component]=\"child() ?? component().properties.child\"\n />\n }\n </button>\n `,\n styles: `\n :host {\n display: block;\n flex: var(--weight);\n min-height: 0;\n }\n `,\n})\nexport class Button extends DynamicComponent<ButtonNode> {\n readonly action = input<Action | null>(null);\n readonly child = input<AnyComponentNode | null>(null);\n // This is currently not handled by the template.\n readonly primary = input<boolean | null>(false);\n\n protected handleClick() {\n const action = this.action();\n\n if (action) {\n super.sendAction(action);\n }\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, input} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport {Renderer} from '../rendering/renderer';\nimport type {AnyComponentNode, CardNode} from '../types';\n\n@Component({\n selector: 'a2ui-card',\n imports: [Renderer],\n template: `\n <div [class]=\"theme.components.Card\" [style]=\"theme.additionalStyles?.Card\">\n @if (child()) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"child()!\" />\n }\n\n @for (comp of children(); track comp.id) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"comp\" />\n }\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Card extends DynamicComponent<CardNode> {\n readonly child = input<AnyComponentNode | null>(null);\n readonly children = input<AnyComponentNode[]>([]);\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport type {BooleanValue, CheckboxNode, StringValue} from '../types';\n\n@Component({\n selector: 'a2ui-checkbox',\n template: `\n <label>\n <input\n type=\"checkbox\"\n [id]=\"inputId\"\n [checked]=\"inputChecked()\"\n (change)=\"onToggle($event)\"\n />\n {{ resolvedLabel() }}\n </label>\n `,\n styles: `\n :host {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Checkbox extends DynamicComponent<CheckboxNode> {\n readonly label = input.required<StringValue | null>();\n readonly value = input.required<BooleanValue | null>();\n\n protected inputChecked = computed(() => super.resolvePrimitive(this.value()) ?? false);\n protected resolvedLabel = computed(() => super.resolvePrimitive(this.label()));\n protected readonly inputId = super.getUniqueId('a2ui-checkbox');\n\n onToggle(event: Event) {\n const checked = (event.target as HTMLInputElement).checked;\n const checkedNode = this.value();\n if (\n checkedNode &&\n typeof checkedNode === 'object' &&\n 'path' in checkedNode &&\n checkedNode.path\n ) {\n // Update the local data model directly to ensure immediate UI feedback and avoid unnecessary network requests.\n this.processor.processMessages([\n {\n dataModelUpdate: {\n surfaceId: this.surfaceId()!,\n path: this.processor.resolvePath(\n checkedNode.path as string,\n this.component().dataContextPath,\n ),\n contents: [{key: '.', valueBoolean: checked}],\n },\n },\n ]);\n } else {\n this.sendAction({\n name: 'toggle',\n context: [{key: 'checked', value: {literalBoolean: checked}}],\n });\n }\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport type {AnyComponentNode, ColumnNode, ResolvedColumn} from '../types';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport {Renderer} from '../rendering/renderer';\n\n@Component({\n selector: 'a2ui-column',\n imports: [Renderer],\n changeDetection: ChangeDetectionStrategy.Eager,\n styles: `\n :host {\n display: flex;\n flex: var(--weight);\n }\n\n section {\n display: flex;\n flex-direction: column;\n min-width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n\n .align-start {\n align-items: start;\n }\n\n .align-center {\n align-items: center;\n }\n\n .align-end {\n align-items: end;\n }\n\n .align-stretch {\n align-items: stretch;\n }\n\n .distribute-start {\n justify-content: start;\n }\n\n .distribute-center {\n justify-content: center;\n }\n\n .distribute-end {\n justify-content: end;\n }\n\n .distribute-spaceBetween {\n justify-content: space-between;\n }\n\n .distribute-spaceAround {\n justify-content: space-around;\n }\n\n .distribute-spaceEvenly {\n justify-content: space-evenly;\n }\n `,\n template: `\n <section [class]=\"classes()\" [style]=\"theme.additionalStyles?.Column\">\n @for (child of children() ?? component().properties.children; track child?.id ?? child) {\n @if (child) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"child\" />\n }\n }\n </section>\n `,\n})\nexport class Column extends DynamicComponent<ColumnNode> {\n readonly alignment = input<ResolvedColumn['alignment']>('stretch');\n readonly distribution = input<ResolvedColumn['distribution']>('start');\n readonly children = input<AnyComponentNode[] | null>();\n\n protected readonly classes = computed(() => ({\n ...this.theme.components.Column,\n [`align-${this.alignment()}`]: true,\n [`distribute-${this.distribution()}`]: true,\n }));\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport type {DateTimeInputNode, StringValue} from '../types';\n\n@Component({\n selector: 'a2ui-datetime-input',\n template: `\n <div\n [class]=\"theme.components.DateTimeInput.container\"\n [style]=\"theme.additionalStyles?.DateTimeInput\"\n >\n <label [class]=\"theme.components.DateTimeInput.label\" [for]=\"inputId\">\n {{ resolvedLabel() }}\n </label>\n <input\n [type]=\"inputType()\"\n [class]=\"theme.components.DateTimeInput.element\"\n [id]=\"inputId\"\n [value]=\"resolvedValue() ?? ''\"\n (change)=\"onChange($event)\"\n />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DateTimeInput extends DynamicComponent<DateTimeInputNode> {\n readonly label = input<StringValue | null>(null);\n readonly value = input.required<StringValue | null>();\n readonly enableDate = input<boolean>(true);\n readonly enableTime = input<boolean>(false);\n\n protected readonly inputId = super.getUniqueId('a2ui-datetime-input');\n\n protected inputType = computed(() => {\n if (this.enableDate() && this.enableTime()) return 'datetime-local';\n if (this.enableTime()) return 'time';\n return 'date';\n });\n\n protected readonly resolvedLabel = computed(() => super.resolvePrimitive(this.label()));\n protected resolvedValue = computed(() => super.resolvePrimitive(this.value()));\n\n onChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n const valueNode = this.value();\n if (valueNode && typeof valueNode === 'object' && 'path' in valueNode && valueNode.path) {\n // Update the local data model directly to ensure immediate UI feedback and avoid unnecessary network requests.\n this.processor.processMessages([\n {\n dataModelUpdate: {\n surfaceId: this.surfaceId()!,\n path: this.processor.resolvePath(\n valueNode.path as string,\n this.component().dataContextPath,\n ),\n contents: [{key: '.', valueString: value}],\n },\n },\n ]);\n } else {\n this.handleAction('change', {value});\n }\n }\n\n private handleAction(name: string, context: Record<string, unknown>) {\n super.sendAction({\n name,\n context: Object.entries(context).map(([key, val]) => ({\n key,\n value: typeof val === 'number' ? {literalNumber: val} : {literalString: String(val)},\n })),\n });\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport type {DividerNode} from '../types';\nimport {DynamicComponent} from '../rendering/dynamic-component';\n\n@Component({\n selector: 'a2ui-divider',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<hr [class]=\"theme.components.Divider\" [style]=\"theme.additionalStyles?.Divider\"/>',\n styles: `\n :host {\n display: block;\n min-height: 0;\n overflow: auto;\n }\n\n hr {\n height: 1px;\n background: #ccc;\n border: none;\n }\n `,\n})\nexport class Divider extends DynamicComponent<DividerNode> {}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport type {IconNode, StringValue} from '../types';\n\n@Component({\n selector: 'a2ui-icon',\n host: {\n 'aria-hidden': 'true',\n tabindex: '-1',\n },\n changeDetection: ChangeDetectionStrategy.Eager,\n styles: `\n :host {\n display: block;\n flex: var(--weight);\n min-height: 0;\n overflow: auto;\n }\n `,\n template: `\n @let resolvedName = this.resolvedName();\n\n @if (resolvedName) {\n <section [class]=\"theme.components.Icon\" [style]=\"theme.additionalStyles?.Icon\">\n <span class=\"g-icon\">{{ resolvedName }}</span>\n </section>\n }\n `,\n})\nexport class Icon extends DynamicComponent<IconNode> {\n readonly name = input<StringValue | null>(null);\n protected readonly resolvedName = computed(() => this.resolvePrimitive(this.name()));\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport * as Primitives from '@a2ui/web_core/types/primitives';\nimport * as Styles from '@a2ui/web_core/styles/index';\nimport type {ImageNode, ResolvedImage} from '../types';\nimport {DynamicComponent} from '../rendering/dynamic-component';\n\n@Component({\n selector: 'a2ui-image',\n changeDetection: ChangeDetectionStrategy.Eager,\n styles: `\n :host {\n display: block;\n flex: var(--weight);\n min-height: 0;\n overflow: auto;\n }\n\n img {\n display: block;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n }\n `,\n template: `\n @let resolvedUrl = this.resolvedUrl();\n @let resolvedAltText = this.resolvedAltText();\n\n @if (resolvedUrl) {\n <section [class]=\"classes()\" [style]=\"theme.additionalStyles?.Image\">\n <img [src]=\"resolvedUrl\" [alt]=\"resolvedAltText\" />\n </section>\n }\n `,\n})\nexport class Image extends DynamicComponent<ImageNode> {\n readonly url = input<Primitives.StringValue | null>(null);\n readonly usageHint = input<ResolvedImage['usageHint'] | null>(null);\n readonly fit = input<ResolvedImage['fit'] | null>(null);\n readonly altText = input<Primitives.StringValue | null>(null);\n\n protected readonly resolvedUrl = computed(() => this.resolvePrimitive(this.url()));\n protected readonly resolvedAltText = computed(() => this.resolvePrimitive(this.altText()) || '');\n\n protected classes = computed(() => {\n const usageHint = this.usageHint();\n\n return Styles.merge(\n this.theme.components.Image.all,\n usageHint ? this.theme.components.Image[usageHint] : {},\n );\n });\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, input} from '@angular/core';\nimport type {AnyComponentNode, ListNode, ResolvedList} from '../types';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport {Renderer} from '../rendering/renderer';\n\n@Component({\n selector: 'a2ui-list',\n imports: [Renderer],\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[attr.direction]': 'direction()',\n },\n styles: `\n :host {\n display: block;\n flex: var(--weight);\n min-height: 0;\n }\n\n :host([direction='vertical']) section {\n display: flex;\n flex-direction: column;\n max-height: 100%;\n overflow-y: auto;\n }\n\n :host([direction='horizontal']) section {\n display: flex;\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n scrollbar-width: none;\n }\n\n .a2ui-list-item {\n display: flex;\n cursor: pointer;\n box-sizing: border-box;\n }\n `,\n template: `\n <section [class]=\"theme.components.List\" [style]=\"theme.additionalStyles?.List\">\n @for (child of children() ?? component().properties.children; track child?.id ?? child) {\n @if (child) {\n <div class=\"a2ui-list-item\">\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"child\" />\n </div>\n }\n }\n </section>\n `,\n})\nexport class List extends DynamicComponent<ListNode> {\n readonly alignment = input<ResolvedList['alignment']>('stretch');\n readonly direction = input<ResolvedList['direction']>('vertical');\n readonly children = input<AnyComponentNode[] | null>(null);\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, input, signal} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport {Renderer} from '../rendering/renderer';\nimport type {AnyComponentNode, ModalNode} from '../types';\n\n@Component({\n selector: 'a2ui-modal',\n imports: [Renderer],\n template: `\n <div class=\"a2ui-modal-entry-point\" (click)=\"openModal()\">\n @if (entryPointChild()) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"entryPointChild()!\" />\n }\n </div>\n\n @if (isOpen()) {\n <div [class]=\"theme.components.Modal.backdrop\" (click)=\"closeModal()\">\n <div [class]=\"theme.components.Modal.element\" (click)=\"$event.stopPropagation()\">\n @if (contentChild()) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"contentChild()!\" />\n }\n </div>\n </div>\n }\n `,\n styles: `\n :host {\n display: inline-block;\n }\n .a2ui-modal-entry-point {\n cursor: pointer;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Modal extends DynamicComponent<ModalNode> {\n readonly entryPointChild = input.required<AnyComponentNode>();\n readonly contentChild = input.required<AnyComponentNode>();\n\n protected readonly isOpen = signal(false);\n\n protected openModal() {\n this.isOpen.set(true);\n }\n\n protected closeModal() {\n this.isOpen.set(false);\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport type {AnyComponentNode, MultipleChoiceNode, StringValue} from '../types';\n\n@Component({\n selector: 'a2ui-multiple-choice',\n template: `\n <div\n [class]=\"theme.components.MultipleChoice.container\"\n [style]=\"theme.additionalStyles?.MultipleChoice\"\n >\n <label [class]=\"theme.components.MultipleChoice.label\" [for]=\"selectId\">\n {{ resolvedLabel() }}\n </label>\n <select\n [class]=\"theme.components.MultipleChoice.element\"\n [id]=\"selectId\"\n [value]=\"resolvedSelections()[0] || ''\"\n (change)=\"onChange($event)\"\n >\n @for (option of resolvedOptions(); track option.value) {\n <option [value]=\"option.value\">{{ option.label }}</option>\n }\n </select>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MultipleChoice extends DynamicComponent<MultipleChoiceNode> {\n readonly label = input<StringValue | null>(null);\n readonly options = input.required<{label: StringValue; value: string}[]>();\n readonly selections = input.required<AnyComponentNode | null>();\n\n protected readonly selectId = super.getUniqueId('a2ui-multiple-choice');\n\n protected readonly resolvedLabel = computed(() => this.resolvePrimitive(this.label()));\n\n protected readonly resolvedOptions = computed(() =>\n this.options().map(opt => ({\n label: this.resolvePrimitive(opt.label),\n value: opt.value,\n })),\n );\n\n protected readonly resolvedSelections = computed(() => {\n const s = this.selections();\n if (s && typeof s === 'object' && 'literalArray' in s) {\n return (s as any).literalArray as string[];\n }\n return [];\n });\n\n onChange(event: Event) {\n const value = (event.target as HTMLSelectElement).value;\n const selectionsNode = this.selections();\n if (\n selectionsNode &&\n typeof selectionsNode === 'object' &&\n 'path' in selectionsNode &&\n selectionsNode.path\n ) {\n // Update the local data model directly to ensure immediate UI feedback and avoid unnecessary network requests.\n this.processor.processMessages([\n {\n dataModelUpdate: {\n surfaceId: this.surfaceId()!,\n path: this.processor.resolvePath(\n selectionsNode.path as string,\n this.component().dataContextPath,\n ),\n contents: [{key: '.', valueString: JSON.stringify({literalArray: [value]})}],\n },\n },\n ]);\n } else {\n this.handleAction('change', {value});\n }\n }\n\n private handleAction(name: string, context: Record<string, unknown>) {\n super.sendAction({\n name,\n context: Object.entries(context).map(([key, val]) => ({\n key,\n value: typeof val === 'number' ? {literalNumber: val} : {literalString: String(val)},\n })),\n });\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport {Renderer} from '../rendering/renderer';\nimport type {AnyComponentNode, ResolvedRow, RowNode} from '../types';\n\n@Component({\n selector: 'a2ui-row',\n imports: [Renderer],\n changeDetection: ChangeDetectionStrategy.Eager,\n host: {\n '[attr.alignment]': 'alignment()',\n '[attr.distribution]': 'distribution()',\n },\n styles: `\n :host {\n display: flex;\n flex: var(--weight);\n }\n\n section {\n display: flex;\n flex-direction: row;\n width: 100%;\n min-height: 100%;\n box-sizing: border-box;\n }\n\n .align-start {\n align-items: start;\n }\n\n .align-center {\n align-items: center;\n }\n\n .align-end {\n align-items: end;\n }\n\n .align-stretch {\n align-items: stretch;\n }\n\n .distribute-start {\n justify-content: start;\n }\n\n .distribute-center {\n justify-content: center;\n }\n\n .distribute-end {\n justify-content: end;\n }\n\n .distribute-spaceBetween {\n justify-content: space-between;\n }\n\n .distribute-spaceAround {\n justify-content: space-around;\n }\n\n .distribute-spaceEvenly {\n justify-content: space-evenly;\n }\n `,\n template: `\n <section [class]=\"classes()\" [style]=\"theme.additionalStyles?.Row\">\n @for (child of children() ?? component().properties.children; track child?.id ?? child) {\n @if (child) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"child\" />\n }\n }\n </section>\n `,\n})\nexport class Row extends DynamicComponent<RowNode> {\n readonly alignment = input<ResolvedRow['alignment']>('stretch');\n readonly distribution = input<ResolvedRow['distribution']>('start');\n readonly children = input<AnyComponentNode[] | null>();\n\n protected readonly classes = computed(() => ({\n ...this.theme.components.Row,\n [`align-${this.alignment()}`]: true,\n [`distribute-${this.distribution()}`]: true,\n }));\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport type {NumberValue, SliderNode, StringValue} from '../types';\nimport {DynamicComponent} from '../rendering/dynamic-component';\n\n@Component({\n selector: 'a2ui-slider',\n template: `\n <div [class]=\"theme.components.Slider.container\" [style]=\"theme.additionalStyles?.Slider\">\n @if (resolvedLabel()) {\n <label [class]=\"theme.components.Slider.label\" [id]=\"labelId\">{{ resolvedLabel() }}</label>\n }\n <input\n type=\"range\"\n [class]=\"theme.components.Slider.element\"\n [id]=\"inputId\"\n [attr.aria-label]=\"resolvedLabel() ? resolvedLabel() : 'Slider'\"\n [min]=\"minValue()\"\n [max]=\"maxValue()\"\n [value]=\"resolvedValue() ?? 0\"\n (input)=\"onInput($event)\"\n />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Slider extends DynamicComponent<SliderNode> {\n readonly label = input<StringValue | null>(null);\n readonly value = input.required<NumberValue | null>();\n readonly minValue = input<number>(0);\n readonly maxValue = input<number>(100);\n\n protected readonly inputId = super.getUniqueId('a2ui-slider-input');\n protected readonly labelId = super.getUniqueId('a2ui-slider-label');\n\n protected resolvedLabel = computed(() => super.resolvePrimitive(this.label()));\n protected resolvedValue = computed(() => super.resolvePrimitive(this.value()));\n\n onInput(event: Event) {\n const value = Number((event.target as HTMLInputElement).value);\n const valueNode = this.value();\n if (valueNode && typeof valueNode === 'object' && 'path' in valueNode && valueNode.path) {\n // Update the local data model directly to ensure immediate UI feedback and avoid unnecessary network requests.\n this.processor.processMessages([\n {\n dataModelUpdate: {\n surfaceId: this.surfaceId()!,\n path: this.processor.resolvePath(\n valueNode.path as string,\n this.component().dataContextPath,\n ),\n contents: [{key: '.', valueNumber: value}],\n },\n },\n ]);\n } else {\n this.handleAction('change', {value});\n }\n }\n\n private handleAction(name: string, context: Record<string, unknown>) {\n super.sendAction({\n name,\n context: Object.entries(context).map(([key, val]) => ({\n key,\n value: typeof val === 'number' ? {literalNumber: val} : {literalString: String(val)},\n })),\n });\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, input, signal} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport {Renderer} from '../rendering/renderer';\nimport type {ResolvedTabs, TabsNode} from '../types';\n\n@Component({\n selector: 'a2ui-tabs',\n imports: [Renderer],\n template: `\n <div [class]=\"theme.components.Tabs.container\" [style]=\"theme.additionalStyles?.Tabs\">\n <div [class]=\"theme.components.Tabs.controls.all\">\n @for (item of tabItems(); track item.child; let i = $index) {\n <button\n [class]=\"selectedIndex() === i ? theme.components.Tabs.controls.selected : {}\"\n (click)=\"selectTab(i)\"\n >\n {{ resolvePrimitive(item.title) }}\n </button>\n }\n </div>\n <div class=\"a2ui-tabs-content\">\n @if (tabItems()[selectedIndex()]; as selectedTab) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"selectedTab.child\" />\n }\n </div>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n .a2ui-tabs-content {\n flex: 1;\n min-height: 0;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Tabs extends DynamicComponent<TabsNode> {\n readonly tabItems = input.required<ResolvedTabs['tabItems']>();\n protected readonly selectedIndex = signal(0);\n\n protected selectTab(index: number) {\n this.selectedIndex.set(index);\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {AsyncPipe} from '@angular/common';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport * as Primitives from '@a2ui/web_core/types/primitives';\nimport * as Styles from '@a2ui/web_core/styles/index';\nimport type {ResolvedText, TextNode} from '../types';\nimport {MarkdownRenderer} from '../data/markdown';\n\ninterface HintedStyles {\n h1: Record<string, string>;\n h2: Record<string, string>;\n h3: Record<string, string>;\n h4: Record<string, string>;\n h5: Record<string, string>;\n body: Record<string, string>;\n caption: Record<string, string>;\n}\n\n@Component({\n selector: 'a2ui-text',\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n <section\n [class]=\"classes()\"\n [style]=\"additionalStyles()\"\n [innerHTML]=\"resolvedText() | async\"\n ></section>\n `,\n encapsulation: ViewEncapsulation.None,\n imports: [AsyncPipe],\n styles: `\n a2ui-text {\n display: block;\n flex: var(--weight);\n }\n\n a2ui-text h1,\n a2ui-text h2,\n a2ui-text h3,\n a2ui-text h4,\n a2ui-text h5 {\n line-height: inherit;\n font: inherit;\n }\n `,\n})\nexport class Text extends DynamicComponent<TextNode> {\n private markdownRenderer = inject(MarkdownRenderer);\n readonly text = input.required<Primitives.StringValue | null>();\n readonly usageHint = input<ResolvedText['usageHint'] | null>(null);\n\n protected resolvedText = computed(() => {\n const usageHint = this.usageHint();\n let value = super.resolvePrimitive(this.text());\n\n if (value == null) {\n return Promise.resolve('');\n }\n\n switch (usageHint) {\n case 'h1':\n value = `# ${value}`;\n break;\n case 'h2':\n value = `## ${value}`;\n break;\n case 'h3':\n value = `### ${value}`;\n break;\n case 'h4':\n value = `#### ${value}`;\n break;\n case 'h5':\n value = `##### ${value}`;\n break;\n case 'caption':\n value = `*${value}*`;\n break;\n default:\n value = String(value);\n break;\n }\n\n return this.markdownRenderer.render(value, {\n tagClassMap: Styles.appendToAll(this.theme.markdown, ['ol', 'ul', 'li'], {}),\n });\n });\n\n protected classes = computed(() => {\n const usageHint = this.usageHint();\n\n return Styles.merge(\n this.theme.components.Text.all,\n usageHint ? this.theme.components.Text[usageHint] : {},\n );\n });\n\n protected additionalStyles = computed(() => {\n const usageHint = this.usageHint();\n const styles = this.theme.additionalStyles?.Text;\n\n if (!styles) {\n return null;\n }\n\n let additionalStyles: Record<string, string> = {};\n\n if (this.areHintedStyles(styles)) {\n additionalStyles = (styles as any)[usageHint ?? 'body'] || {};\n } else if (typeof styles === 'object' && styles !== null) {\n additionalStyles = styles as Record<string, string>;\n }\n\n return additionalStyles;\n });\n\n private areHintedStyles(styles: unknown): styles is HintedStyles {\n if (typeof styles !== 'object' || !styles || Array.isArray(styles)) {\n return false;\n }\n\n const expected = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'caption', 'body'];\n return expected.every(v => v in styles);\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport type {ResolvedTextField, StringValue, TextFieldNode} from '../types';\n\n@Component({\n selector: 'a2ui-text-field',\n template: `\n <div [class]=\"theme.components.TextField.container\" [style]=\"theme.additionalStyles?.TextField\">\n <label [class]=\"theme.components.TextField.label\" [for]=\"inputId\">\n {{ resolvedLabel() }}\n </label>\n <input\n [type]=\"htmlInputType()\"\n [class]=\"theme.components.TextField.element\"\n [id]=\"inputId\"\n [value]=\"resolvedText() ?? ''\"\n (input)=\"onInput($event)\"\n />\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TextField extends DynamicComponent<TextFieldNode> {\n readonly label = input.required<StringValue | null>();\n readonly text = input<StringValue | null>(null);\n readonly textFieldType = input<ResolvedTextField['textFieldType']>('shortText');\n\n protected readonly inputId = super.getUniqueId('a2ui-text-field');\n\n protected resolvedLabel = computed(() => super.resolvePrimitive(this.label()));\n protected resolvedText = computed(() => super.resolvePrimitive(this.text()));\n\n protected htmlInputType = computed(() => {\n switch (this.textFieldType()) {\n case 'number':\n return 'number';\n case 'date':\n return 'date';\n default:\n return 'text';\n }\n });\n\n onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n const textNode = this.text();\n if (textNode && typeof textNode === 'object' && 'path' in textNode && textNode.path) {\n // Update the local data model directly to ensure immediate UI feedback and avoid unnecessary network requests.\n this.processor.processMessages([\n {\n dataModelUpdate: {\n surfaceId: this.surfaceId()!,\n path: this.processor.resolvePath(\n textNode.path as string,\n this.component().dataContextPath,\n ),\n contents: [{key: '.', valueString: value}],\n },\n },\n ]);\n } else {\n this.handleAction('input', {value});\n }\n }\n\n private handleAction(name: string, context: Record<string, unknown>) {\n super.sendAction({\n name,\n context: Object.entries(context).map(([key, val]) => ({\n key,\n value: typeof val === 'number' ? {literalNumber: val} : {literalString: String(val)},\n })),\n });\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, input} from '@angular/core';\nimport {DynamicComponent} from '../rendering/dynamic-component';\nimport type {StringValue, VideoNode} from '../types';\n\n@Component({\n selector: 'a2ui-video',\n changeDetection: ChangeDetectionStrategy.Eager,\n template: `\n @let resolvedUrl = this.resolvedUrl();\n\n @if (resolvedUrl) {\n <section [class]=\"theme.components.Video\" [style]=\"theme.additionalStyles?.Video\">\n <video controls [src]=\"resolvedUrl\"></video>\n </section>\n }\n `,\n styles: `\n :host {\n display: block;\n flex: var(--weight);\n min-height: 0;\n overflow: auto;\n }\n\n video {\n display: block;\n width: 100%;\n box-sizing: border-box;\n }\n `,\n})\nexport class Video extends DynamicComponent<VideoNode> {\n readonly url = input.required<StringValue | null>();\n protected readonly resolvedUrl = computed(() => this.resolvePrimitive(this.url()));\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Catalog} from '../rendering/catalog';\n\n// Components\nimport {AudioPlayer} from '../components/audio';\nimport {Button} from '../components/button';\nimport {Card} from '../components/card';\nimport {Checkbox} from '../components/checkbox';\nimport {Column} from '../components/column';\nimport {DateTimeInput} from '../components/datetime-input';\nimport {Divider} from '../components/divider';\nimport {Icon} from '../components/icon';\nimport {Image} from '../components/image';\nimport {List} from '../components/list';\nimport {Modal} from '../components/modal';\nimport {MultipleChoice} from '../components/multiple-choice';\nimport {Row} from '../components/row';\nimport {Slider} from '../components/slider';\nimport {Tabs} from '../components/tabs';\nimport {Text} from '../components/text';\nimport {TextField} from '../components/text-field';\nimport {Video} from '../components/video';\n\nexport const DEFAULT_CATALOG: Catalog = {\n AudioPlayer: () => AudioPlayer,\n Button: () => Button,\n Card: () => Card,\n CheckBox: () => Checkbox,\n Column: () => Column,\n DateTimeInput: () => DateTimeInput,\n Divider: () => Divider,\n Icon: () => Icon,\n Image: () => Image,\n List: () => List,\n Modal: () => Modal,\n MultipleChoice: () => MultipleChoice,\n Row: () => Row,\n Slider: () => Slider,\n Tabs: () => Tabs,\n Text: () => Text,\n TextField: () => TextField,\n Video: () => Video,\n};\n\nexport function registerStandardComponents(catalog: Catalog) {\n for (const [key, value] of Object.entries(DEFAULT_CATALOG)) {\n catalog[key] = value;\n }\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {MessageProcessor} from '../data';\nimport {Renderer} from '../rendering/renderer';\nimport type {Surface as SurfaceType, SurfaceID} from '../types';\n\n@Component({\n selector: 'a2ui-surface',\n imports: [Renderer],\n template: `\n @if (rootComponent()) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()\" [component]=\"rootComponent()!\" />\n }\n `,\n styles: `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Surface {\n private readonly processor = inject(MessageProcessor);\n readonly surfaceId = input.required<SurfaceID>();\n readonly surfaceInput = input<SurfaceType | null>(null, {alias: 'surface'});\n\n protected readonly surface = computed(() => {\n this.processor.version(); // Track dependency on in-place mutations\n return this.surfaceInput() ?? this.processor.getSurfaces().get(this.surfaceId()) ?? null;\n });\n\n protected readonly rootComponent = computed(() => {\n this.processor.version(); // Track dependency on in-place mutations\n return this.surface()?.componentTree ?? null;\n });\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './catalog';\nexport * from './dynamic-component';\nexport * from './renderer';\nexport * from './theming';\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {EnvironmentProviders, makeEnvironmentProviders} from '@angular/core';\nimport {Catalog, Theme} from './rendering';\nimport type {Theme as ThemeType} from './types';\n\nexport function provideA2UI(config: {catalog: Catalog; theme: ThemeType}): EnvironmentProviders {\n return makeEnvironmentProviders([\n {provide: Catalog, useValue: config.catalog},\n {\n provide: Theme,\n useFactory: () => {\n const theme = new Theme();\n theme.update(config.theme);\n return theme;\n },\n },\n ]);\n}\n","/*\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Reexports v0.8 renderer types.\n *\n * These types are aliases or re-exports of core types from `@a2ui/web_core/v0_8`.\n * Documentation for each type is available in the web core package.\n */\n\nimport * as WebCore from '@a2ui/web_core/v0_8';\n\n// Messages & Infrastructure\nexport type Action = WebCore.Action;\nexport type FunctionCall = unknown;\nexport type SurfaceID = string;\nexport type StringValue = WebCore.StringValue;\nexport type BooleanValue = WebCore.BooleanValue;\nexport type NumberValue = WebCore.NumberValue;\nexport type Surface = WebCore.Surface;\n\nexport type A2UIClientEventMessage = WebCore.A2UIClientEventMessage;\nexport type ClientToServerMessage = A2UIClientEventMessage;\nexport type ServerToClientMessage = WebCore.ServerToClientMessage;\n\n// Components & Interfaces\nexport interface Component<P = Record<string, unknown>> {\n id: string;\n type: string;\n properties: P;\n}\n\nexport type AnyComponentNode = WebCore.AnyComponentNode;\nexport type CustomNode = WebCore.CustomNode;\nexport type Theme = WebCore.Theme;\n\n// Node Types (Explicit suffix)\nexport type RowNode = WebCore.RowNode;\nexport type ColumnNode = WebCore.ColumnNode;\nexport type TextNode = WebCore.TextNode;\nexport type ListNode = WebCore.ListNode;\nexport type ImageNode = WebCore.ImageNode;\nexport type IconNode = WebCore.IconNode;\nexport type VideoNode = WebCore.VideoNode;\nexport type AudioPlayerNode = WebCore.AudioPlayerNode;\nexport type ButtonNode = WebCore.ButtonNode;\nexport type DividerNode = WebCore.DividerNode;\nexport type MultipleChoiceNode = WebCore.MultipleChoiceNode;\nexport type TextFieldNode = WebCore.TextFieldNode;\nexport type CheckboxNode = WebCore.CheckboxNode;\nexport type SliderNode = WebCore.SliderNode;\nexport type DateTimeInputNode = WebCore.DateTimeInputNode;\nexport type TabsNode = WebCore.TabsNode;\nexport type ModalNode = WebCore.ModalNode;\nexport type CardNode = WebCore.CardNode;\n\n// Resolved Property Types\nexport type ResolvedRow = WebCore.ResolvedRow;\nexport type ResolvedColumn = WebCore.ResolvedColumn;\nexport type ResolvedText = WebCore.ResolvedText;\nexport type ResolvedList = WebCore.ResolvedList;\nexport type ResolvedImage = WebCore.ResolvedImage;\nexport type ResolvedIcon = WebCore.ResolvedIcon;\nexport type ResolvedVideo = WebCore.ResolvedVideo;\nexport type ResolvedAudioPlayer = WebCore.ResolvedAudioPlayer;\nexport type ResolvedButton = WebCore.ResolvedButton;\nexport type ResolvedDivider = WebCore.ResolvedDivider;\nexport type ResolvedMultipleChoice = WebCore.ResolvedMultipleChoice;\nexport type ResolvedTextField = WebCore.ResolvedTextField;\nexport type ResolvedCheckbox = WebCore.ResolvedCheckbox;\nexport type ResolvedSlider = WebCore.ResolvedSlider;\nexport type ResolvedDateTimeInput = WebCore.ResolvedDateTimeInput;\nexport type ResolvedTabs = WebCore.ResolvedTabs;\nexport type ResolvedModal = WebCore.ResolvedModal;\nexport type ResolvedCard = WebCore.ResolvedCard;\n\n// Markdown\nexport type MarkdownRenderer = WebCore.MarkdownRenderer;\nexport type MarkdownRendererOptions = WebCore.MarkdownRendererOptions;\n","/**\n * Copyright 2026 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './catalog/index';\nexport * from './components/audio';\nexport * from './components/button';\nexport * from './components/card';\nexport * from './components/checkbox';\nexport * from './components/column';\nexport * from './components/datetime-input';\nexport * from './components/divider';\nexport * from './components/icon';\nexport * from './components/image';\nexport * from './components/list';\nexport * from './components/modal';\nexport * from './components/multiple-choice';\nexport * from './components/row';\nexport * from './components/slider';\nexport * from './components/surface';\nexport * from './components/tabs';\nexport * from './components/text-field';\nexport * from './components/text';\nexport * from './components/video';\nexport * from './config';\nexport * from './data/index';\nexport * from './rendering/index';\nexport * as Types from './types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|