@a2ui/angular 0.8.1 → 0.8.2
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/fesm2022/a2ui-angular-audio-DoZb9mn_.mjs +48 -0
- package/fesm2022/a2ui-angular-audio-DoZb9mn_.mjs.map +1 -0
- package/fesm2022/a2ui-angular-button-CvH0kAtN.mjs +61 -0
- package/fesm2022/a2ui-angular-button-CvH0kAtN.mjs.map +1 -0
- package/fesm2022/a2ui-angular-card-Ix6OIdUv.mjs +48 -0
- package/fesm2022/a2ui-angular-card-Ix6OIdUv.mjs.map +1 -0
- package/fesm2022/a2ui-angular-checkbox-BN4EF2Ci.mjs +78 -0
- package/fesm2022/a2ui-angular-checkbox-BN4EF2Ci.mjs.map +1 -0
- package/fesm2022/a2ui-angular-datetime-input-dmZAjvrF.mjs +120 -0
- package/fesm2022/a2ui-angular-datetime-input-dmZAjvrF.mjs.map +1 -0
- package/fesm2022/a2ui-angular-divider-BizPl3qL.mjs +30 -0
- package/fesm2022/a2ui-angular-divider-BizPl3qL.mjs.map +1 -0
- package/fesm2022/a2ui-angular-icon-BE9Hj9V6.mjs +48 -0
- package/fesm2022/a2ui-angular-icon-BE9Hj9V6.mjs.map +1 -0
- package/fesm2022/a2ui-angular-image-BWzAw0rh.mjs +54 -0
- package/fesm2022/a2ui-angular-image-BWzAw0rh.mjs.map +1 -0
- package/fesm2022/a2ui-angular-list-nEeT59V3.mjs +45 -0
- package/fesm2022/a2ui-angular-list-nEeT59V3.mjs.map +1 -0
- package/fesm2022/a2ui-angular-modal-mr9LmczA.mjs +108 -0
- package/fesm2022/a2ui-angular-modal-mr9LmczA.mjs.map +1 -0
- package/fesm2022/a2ui-angular-multiple-choice-Bry7X74i.mjs +78 -0
- package/fesm2022/a2ui-angular-multiple-choice-Bry7X74i.mjs.map +1 -0
- package/fesm2022/a2ui-angular-slider-BgseUbN2.mjs +79 -0
- package/fesm2022/a2ui-angular-slider-BgseUbN2.mjs.map +1 -0
- package/fesm2022/a2ui-angular-tabs-q5Mn9vgq.mjs +87 -0
- package/fesm2022/a2ui-angular-tabs-q5Mn9vgq.mjs.map +1 -0
- package/fesm2022/a2ui-angular-text-field-Deokh07j.mjs +85 -0
- package/fesm2022/a2ui-angular-text-field-Deokh07j.mjs.map +1 -0
- package/fesm2022/a2ui-angular-video-DuFTfN0B.mjs +48 -0
- package/fesm2022/a2ui-angular-video-DuFTfN0B.mjs.map +1 -0
- package/fesm2022/a2ui-angular.mjs +872 -0
- package/fesm2022/a2ui-angular.mjs.map +1 -0
- package/package.json +12 -45
- package/types/a2ui-angular.d.ts +90 -0
- package/angular.json +0 -35
- package/ng-package.json +0 -8
- package/src/lib/catalog/audio.ts +0 -50
- package/src/lib/catalog/button.ts +0 -56
- package/src/lib/catalog/card.ts +0 -57
- package/src/lib/catalog/checkbox.ts +0 -73
- package/src/lib/catalog/column.ts +0 -96
- package/src/lib/catalog/datetime-input.ts +0 -127
- package/src/lib/catalog/default.ts +0 -185
- package/src/lib/catalog/divider.ts +0 -37
- package/src/lib/catalog/icon.ts +0 -44
- package/src/lib/catalog/image.ts +0 -62
- package/src/lib/catalog/list.ts +0 -63
- package/src/lib/catalog/modal.ts +0 -113
- package/src/lib/catalog/multiple-choice.ts +0 -77
- package/src/lib/catalog/row.ts +0 -100
- package/src/lib/catalog/slider.ts +0 -73
- package/src/lib/catalog/surface.ts +0 -82
- package/src/lib/catalog/tabs.ts +0 -72
- package/src/lib/catalog/text-field.ts +0 -86
- package/src/lib/catalog/text.ts +0 -137
- package/src/lib/catalog/video.ts +0 -50
- package/src/lib/config.ts +0 -25
- package/src/lib/data/index.ts +0 -18
- package/src/lib/data/markdown.ts +0 -114
- package/src/lib/data/processor.ts +0 -47
- package/src/lib/data/types.ts +0 -29
- package/src/lib/rendering/catalog.ts +0 -36
- package/src/lib/rendering/dynamic-component.ts +0 -100
- package/src/lib/rendering/index.ts +0 -20
- package/src/lib/rendering/renderer.ts +0 -109
- package/src/lib/rendering/theming.ts +0 -22
- package/src/public-api.ts +0 -21
- package/tsconfig.json +0 -23
- package/tsconfig.lib.json +0 -16
- package/tsconfig.lib.prod.json +0 -9
- package/tsconfig.spec.json +0 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"a2ui-angular.mjs","sources":["../../src/lib/rendering/catalog.ts","../../src/lib/data/processor.ts","../../src/lib/data/types.ts","../../src/lib/data/index.ts","../../src/lib/rendering/theming.ts","../../src/lib/rendering/dynamic-component.ts","../../src/lib/rendering/renderer.ts","../../src/lib/rendering/index.ts","../../src/lib/config.ts","../../src/lib/catalog/row.ts","../../src/lib/catalog/column.ts","../../src/lib/data/markdown.ts","../../src/lib/catalog/text.ts","../../src/lib/catalog/default.ts","../../src/lib/catalog/surface.ts","../../src/public-api.ts","../../src/a2ui-angular.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 { Binding, InjectionToken, Type } from '@angular/core';\nimport { DynamicComponent } from './dynamic-component';\nimport { Types } from '@a2ui/lit/0.8';\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 { Data, Types } from '@a2ui/lit/0.8';\nimport { Injectable } from '@angular/core';\nimport { firstValueFrom, Subject } from 'rxjs';\n\nexport interface DispatchedEvent {\n message: Types.A2UIClientEventMessage;\n completion: Subject<Types.ServerToClientMessage[]>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MessageProcessor extends Data.A2uiMessageProcessor {\n readonly events = new Subject<DispatchedEvent>();\n\n override setData(\n node: Types.AnyComponentNode,\n relativePath: string,\n value: Types.DataValue,\n surfaceId?: Types.SurfaceID | null,\n ) {\n // Override setData to convert from optional inputs (which can be null)\n // to undefined so that this correctly falls back to the default value for\n // surfaceId.\n return super.setData(node, relativePath, value, surfaceId ?? undefined);\n }\n\n dispatch(message: Types.A2UIClientEventMessage): Promise<Types.ServerToClientMessage[]> {\n const completion = new Subject<Types.ServerToClientMessage[]>();\n this.events.next({ message, completion });\n return firstValueFrom(completion);\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 '@a2ui/lit/0.8';\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\nexport * from './processor';\nexport * from './types';\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 '@a2ui/lit/0.8';\nimport { InjectionToken } from '@angular/core';\n\nexport const Theme = new InjectionToken<Theme>('Theme');\n\nexport type Theme = Types.Theme;\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, Primitives } from '@a2ui/lit/0.8';\nimport { Directive, inject, input } from '@angular/core';\nimport { MessageProcessor } from '../data';\nimport { Theme } from './theming';\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) {\n context[item.key] = item.value.literalBoolean;\n } else if (item.value.literalNumber) {\n context[item.key] = item.value.literalNumber;\n } else if (item.value.literalString) {\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: Primitives.StringValue | null): string | null;\n protected resolvePrimitive(value: Primitives.BooleanValue | null): boolean | null;\n protected resolvePrimitive(value: Primitives.NumberValue | null): number | null;\n protected resolvePrimitive(\n value: Primitives.StringValue | Primitives.BooleanValue | Primitives.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 (value.literal != null) {\n return value.literal;\n } else if (value.path) {\n return this.processor.getData(component, value.path, surfaceId ?? undefined);\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 {\n Binding,\n ComponentRef,\n Directive,\n DOCUMENT,\n effect,\n inject,\n input,\n inputBinding,\n OnDestroy,\n PLATFORM_ID,\n Type,\n untracked,\n ViewContainerRef,\n} from '@angular/core';\nimport { Types, Styles } from '@a2ui/lit/0.8';\nimport { Catalog } from './catalog';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({\n selector: 'ng-container[a2ui-renderer]',\n})\nexport class Renderer implements OnDestroy {\n private viewContainerRef = inject(ViewContainerRef);\n private catalog = inject(Catalog);\n private static hasInsertedStyles = false;\n\n private currentRef: ComponentRef<unknown> | null = null;\n private isDestroyed = false;\n\n readonly surfaceId = input.required<Types.SurfaceID>();\n readonly component = input.required<Types.AnyComponentNode>();\n\n constructor() {\n effect(() => {\n const surfaceId = this.surfaceId();\n const component = this.component();\n untracked(() => this.render(surfaceId, component));\n });\n\n const platformId = inject(PLATFORM_ID);\n const document = inject(DOCUMENT);\n\n if (!Renderer.hasInsertedStyles && isPlatformBrowser(platformId)) {\n const styles = document.createElement('style');\n styles.textContent = Styles.structuralStyles;\n document.head.appendChild(styles);\n Renderer.hasInsertedStyles = true;\n }\n }\n\n ngOnDestroy(): void {\n this.isDestroyed = true;\n this.clear();\n }\n\n private async render(surfaceId: Types.SurfaceID, component: Types.AnyComponentNode) {\n const config = this.catalog[component.type];\n let newComponent: Type<unknown> | null = null;\n let componentBindings: Binding[] | null = null;\n\n if (typeof config === 'function') {\n newComponent = await config();\n } else if (typeof config === 'object') {\n newComponent = await config.type();\n componentBindings = config.bindings(component as any);\n }\n\n this.clear();\n\n if (newComponent && !this.isDestroyed) {\n const bindings = [\n inputBinding('surfaceId', () => surfaceId),\n inputBinding('component', () => component),\n inputBinding('weight', () => component.weight ?? 'initial'),\n ];\n\n if (componentBindings) {\n bindings.push(...componentBindings);\n }\n\n this.currentRef = this.viewContainerRef.createComponent(newComponent, {\n bindings,\n injector: this.viewContainerRef.injector,\n });\n }\n }\n\n private clear() {\n this.currentRef?.destroy();\n this.currentRef = 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';\n\nexport function provideA2UI(config: { catalog: Catalog; theme: Theme }): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: Catalog, useValue: config.catalog },\n { provide: Theme, useValue: config.theme },\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 { Component, computed, input } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Renderer } from '../rendering/renderer';\nimport { Types } from '@a2ui/lit/0.8';\n\n@Component({\n selector: 'a2ui-row',\n imports: [Renderer],\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 component().properties.children; track child) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"child\" />\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\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 { Component, computed, input } from '@angular/core';\nimport { Types } from '@a2ui/lit/0.8';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Renderer } from '../rendering/renderer';\n\n@Component({\n selector: 'a2ui-column',\n imports: [Renderer],\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 component().properties.children; track child) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId()!\" [component]=\"child\" />\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\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 { inject, Injectable, SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport MarkdownIt from 'markdown-it';\n\n@Injectable({ providedIn: 'root' })\nexport class MarkdownRenderer {\n private originalClassMap = new Map<string, any>();\n private sanitizer = inject(DomSanitizer);\n\n private markdownIt = MarkdownIt({\n highlight: (str, lang) => {\n if (lang === 'html') {\n const iframe = document.createElement('iframe');\n iframe.classList.add('html-view');\n iframe.srcdoc = str;\n iframe.sandbox = '';\n return iframe.innerHTML;\n }\n\n return str;\n },\n });\n\n render(value: string, tagClassMap?: Record<string, string[]>) {\n if (tagClassMap) {\n this.applyTagClassMap(tagClassMap);\n }\n const htmlString = this.markdownIt.render(value);\n this.unapplyTagClassMap();\n return this.sanitizer.sanitize(SecurityContext.HTML, htmlString);\n }\n\n private applyTagClassMap(tagClassMap: Record<string, string[]>) {\n Object.entries(tagClassMap).forEach(([tag, classes]) => {\n let tokenName;\n switch (tag) {\n case 'p':\n tokenName = 'paragraph';\n break;\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n tokenName = 'heading';\n break;\n case 'ul':\n tokenName = 'bullet_list';\n break;\n case 'ol':\n tokenName = 'ordered_list';\n break;\n case 'li':\n tokenName = 'list_item';\n break;\n case 'a':\n tokenName = 'link';\n break;\n case 'strong':\n tokenName = 'strong';\n break;\n case 'em':\n tokenName = 'em';\n break;\n }\n\n if (!tokenName) {\n return;\n }\n\n const key = `${tokenName}_open`;\n const original = this.markdownIt.renderer.rules[key];\n this.originalClassMap.set(key, original);\n\n this.markdownIt.renderer.rules[key] = (tokens, idx, options, env, self) => {\n const token = tokens[idx];\n for (const clazz of classes) {\n token.attrJoin('class', clazz);\n }\n\n if (original) {\n return original.call(this, tokens, idx, options, env, self);\n } else {\n return self.renderToken(tokens, idx, options);\n }\n };\n });\n }\n\n private unapplyTagClassMap() {\n for (const [key, original] of this.originalClassMap) {\n this.markdownIt.renderer.rules[key] = original;\n }\n\n this.originalClassMap.clear();\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 { Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { DynamicComponent } from '../rendering/dynamic-component';\nimport { Primitives, Styles, Types } from '@a2ui/lit/0.8';\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 template: `\n <section\n [class]=\"classes()\"\n [style]=\"additionalStyles()\"\n [innerHTML]=\"resolvedText()\"\n ></section>\n `,\n encapsulation: ViewEncapsulation.None,\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 {\n private markdownRenderer = inject(MarkdownRenderer);\n readonly text = input.required<Primitives.StringValue | null>();\n readonly usageHint = input.required<Types.ResolvedText['usageHint'] | 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 '(empty)';\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(\n value,\n 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[usageHint ?? 'body'];\n } else {\n additionalStyles = styles;\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 { inputBinding } from '@angular/core';\nimport { Types } from '@a2ui/lit/0.8';\nimport { Catalog } from '../rendering/catalog';\nimport { Row } from './row';\nimport { Column } from './column';\nimport { Text } from './text';\n\nexport const DEFAULT_CATALOG: Catalog = {\n Row: {\n type: () => Row,\n bindings: (node) => {\n const properties = (node as Types.RowNode).properties;\n return [\n inputBinding('alignment', () => properties.alignment ?? 'stretch'),\n inputBinding('distribution', () => properties.distribution ?? 'start'),\n ];\n },\n },\n\n Column: {\n type: () => Column,\n bindings: (node) => {\n const properties = (node as Types.ColumnNode).properties;\n return [\n inputBinding('alignment', () => properties.alignment ?? 'stretch'),\n inputBinding('distribution', () => properties.distribution ?? 'start'),\n ];\n },\n },\n\n List: {\n type: () => import('./list').then((r) => r.List),\n bindings: (node) => {\n const properties = (node as Types.ListNode).properties;\n return [inputBinding('direction', () => properties.direction ?? 'vertical')];\n },\n },\n\n Card: () => import('./card').then((r) => r.Card),\n\n Image: {\n type: () => import('./image').then((r) => r.Image),\n bindings: (node) => {\n const properties = (node as Types.ImageNode).properties;\n return [\n inputBinding('url', () => properties.url),\n inputBinding('usageHint', () => properties.usageHint),\n ];\n },\n },\n\n Icon: {\n type: () => import('./icon').then((r) => r.Icon),\n bindings: (node) => {\n const properties = (node as Types.IconNode).properties;\n return [inputBinding('name', () => properties.name)];\n },\n },\n\n Video: {\n type: () => import('./video').then((r) => r.Video),\n bindings: (node) => {\n const properties = (node as Types.VideoNode).properties;\n return [inputBinding('url', () => properties.url)];\n },\n },\n\n AudioPlayer: {\n type: () => import('./audio').then((r) => r.Audio),\n bindings: (node) => {\n const properties = (node as Types.AudioPlayerNode).properties;\n return [inputBinding('url', () => properties.url)];\n },\n },\n\n Text: {\n type: () => Text,\n bindings: (node) => {\n const properties = (node as Types.TextNode).properties;\n return [\n inputBinding('text', () => properties.text),\n inputBinding('usageHint', () => properties.usageHint || null),\n ];\n },\n },\n\n Button: {\n type: () => import('./button').then((r) => r.Button),\n bindings: (node) => {\n const properties = (node as Types.ButtonNode).properties;\n return [inputBinding('action', () => properties.action)];\n },\n },\n\n Divider: () => import('./divider').then((r) => r.Divider),\n\n MultipleChoice: {\n type: () => import('./multiple-choice').then((r) => r.MultipleChoice),\n bindings: (node) => {\n const properties = (node as Types.MultipleChoiceNode).properties;\n return [\n inputBinding('options', () => properties.options || []),\n inputBinding('value', () => properties.selections),\n inputBinding('description', () => 'Select an item'), // TODO: this should be defined in the properties\n ];\n },\n },\n\n TextField: {\n type: () => import('./text-field').then((r) => r.TextField),\n bindings: (node) => {\n const properties = (node as Types.TextFieldNode).properties;\n return [\n inputBinding('text', () => properties.text ?? null),\n inputBinding('label', () => properties.label),\n inputBinding('inputType', () => properties.type),\n ];\n },\n },\n\n DateTimeInput: {\n type: () => import('./datetime-input').then((r) => r.DatetimeInput),\n bindings: (node) => {\n const properties = (node as Types.DateTimeInputNode).properties;\n return [\n inputBinding('enableDate', () => properties.enableDate),\n inputBinding('enableTime', () => properties.enableTime),\n inputBinding('value', () => properties.value),\n ];\n },\n },\n\n CheckBox: {\n type: () => import('./checkbox').then((r) => r.Checkbox),\n bindings: (node) => {\n const properties = (node as Types.CheckboxNode).properties;\n return [\n inputBinding('label', () => properties.label),\n inputBinding('value', () => properties.value),\n ];\n },\n },\n\n Slider: {\n type: () => import('./slider').then((r) => r.Slider),\n bindings: (node) => {\n const properties = (node as Types.SliderNode).properties;\n return [\n inputBinding('value', () => properties.value),\n inputBinding('minValue', () => properties.minValue),\n inputBinding('maxValue', () => properties.maxValue),\n inputBinding('label', () => ''), // TODO: this should be defined in the properties\n ];\n },\n },\n\n Tabs: {\n type: () => import('./tabs').then((r) => r.Tabs),\n bindings: (node) => {\n const properties = (node as Types.TabsNode).properties;\n return [inputBinding('tabs', () => properties.tabItems)];\n },\n },\n\n Modal: {\n type: () => import('./modal').then((r) => r.Modal),\n bindings: () => [],\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 { Component, computed, input } from '@angular/core';\nimport { Types } from '@a2ui/lit/0.8';\nimport { Renderer } from '../rendering/renderer';\n\n@Component({\n selector: 'a2ui-surface',\n imports: [Renderer],\n template: `\n @let surfaceId = this.surfaceId();\n @let surface = this.surface();\n\n @if (surfaceId && surface) {\n <ng-container a2ui-renderer [surfaceId]=\"surfaceId\" [component]=\"surface.componentTree!\" />\n }\n `,\n styles: `\n :host {\n display: flex;\n min-height: 0;\n max-height: 100%;\n flex-direction: column;\n gap: 16px;\n }\n `,\n host: {\n '[style]': 'styles()',\n },\n})\nexport class Surface {\n readonly surfaceId = input.required<Types.SurfaceID | null>();\n readonly surface = input.required<Types.Surface | null>();\n\n protected readonly styles = computed(() => {\n const surface = this.surface();\n const styles: Record<string, string> = {};\n\n if (surface?.styles) {\n for (const [key, value] of Object.entries(surface.styles)) {\n switch (key) {\n // Here we generate a palette from the singular primary color received\n // from the surface data. We will want the values to range from\n // 0 <= x <= 100, where 0 = back, 100 = white, and 50 = the primary\n // color itself. As such we use a color-mix to create the intermediate\n // values.\n //\n // Note: since we use half the range for black to the primary color,\n // and half the range for primary color to white the mixed values have\n // to go up double the amount, i.e., a range from black to primary\n // color needs to fit in 0 -> 50 rather than 0 -> 100.\n case 'primaryColor': {\n styles['--p-100'] = '#ffffff';\n styles['--p-99'] = `color-mix(in srgb, ${value} 2%, white 98%)`;\n styles['--p-98'] = `color-mix(in srgb, ${value} 4%, white 96%)`;\n styles['--p-95'] = `color-mix(in srgb, ${value} 10%, white 90%)`;\n styles['--p-90'] = `color-mix(in srgb, ${value} 20%, white 80%)`;\n styles['--p-80'] = `color-mix(in srgb, ${value} 40%, white 60%)`;\n styles['--p-70'] = `color-mix(in srgb, ${value} 60%, white 40%)`;\n styles['--p-60'] = `color-mix(in srgb, ${value} 80%, white 20%)`;\n styles['--p-50'] = value;\n styles['--p-40'] = `color-mix(in srgb, ${value} 80%, black 20%)`;\n styles['--p-35'] = `color-mix(in srgb, ${value} 70%, black 30%)`;\n styles['--p-30'] = `color-mix(in srgb, ${value} 60%, black 40%)`;\n styles['--p-25'] = `color-mix(in srgb, ${value} 50%, black 50%)`;\n styles['--p-20'] = `color-mix(in srgb, ${value} 40%, black 60%)`;\n styles['--p-15'] = `color-mix(in srgb, ${value} 30%, black 70%)`;\n styles['--p-10'] = `color-mix(in srgb, ${value} 20%, black 80%)`;\n styles['--p-5'] = `color-mix(in srgb, ${value} 10%, black 90%)`;\n styles['--0'] = '#00000';\n break;\n }\n\n case 'font': {\n styles['--font-family'] = value;\n styles['--font-family-flex'] = value;\n break;\n }\n }\n }\n }\n\n return 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\nexport * from './lib/rendering/index';\nexport * from './lib/data/index';\nexport * from './lib/config';\nexport * from './lib/catalog/default';\nexport { Surface } from './lib/catalog/surface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAAA;;;;;;;;;;;;;;AAcG;MAqBU,OAAO,GAAG,IAAI,cAAc,CAAU,SAAS;;ACnC5D;;;;;;;;;;;;;;AAcG;AAYG,MAAO,gBAAiB,SAAQ,IAAI,CAAC,oBAAoB,CAAA;AACpD,IAAA,MAAM,GAAG,IAAI,OAAO,EAAmB;AAEvC,IAAA,OAAO,CACd,IAA4B,EAC5B,YAAoB,EACpB,KAAsB,EACtB,SAAkC,EAAA;;;;AAKlC,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,IAAI,SAAS,CAAC;IACzE;AAEA,IAAA,QAAQ,CAAC,OAAqC,EAAA;AAC5C,QAAA,MAAM,UAAU,GAAG,IAAI,OAAO,EAAiC;QAC/D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACzC,QAAA,OAAO,cAAc,CAAC,UAAU,CAAC;IACnC;uGAnBW,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA;;2FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACzBlC;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;MAKU,KAAK,GAAG,IAAI,cAAc,CAAQ,OAAO;;ACEtD,IAAI,SAAS,GAAG,CAAC;MAOK,gBAAgB,CAAA;AACjB,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAE/B,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAA0B;AACpD,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAK;AAC/B,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAmB;AAEzC,IAAA,UAAU,CAAC,MAAoB,EAAA;AACvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,SAAS;QAC/C,MAAM,OAAO,GAA4B,EAAE;AAE3C,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AAClB,YAAA,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE;AACjC,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;oBAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc;gBAC/C;AAAO,qBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;oBACnC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;gBAC9C;AAAO,qBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;oBACnC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;gBAC9C;AAAO,qBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC1B,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,eAAe,CAAC;AACnF,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AAChE,oBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;gBAC3B;YACF;QACF;AAEA,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,UAAU,EAAE;gBACV,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,iBAAiB,EAAE,SAAS,CAAC,EAAE;AAC/B,gBAAA,SAAS,EAAE,SAAU;AACrB,gBAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,OAAO;AACR,aAAA;SACF;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzC;AAKU,IAAA,gBAAgB,CACxB,KAAuF,EAAA;AAEvF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAElC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACvC,YAAA,OAAO,IAAI;QACb;AAAO,aAAA,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE;YAChC,OAAO,KAAK,CAAC,OAAO;QACtB;AAAO,aAAA,IAAI,KAAK,CAAC,IAAI,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,IAAI,SAAS,CAAC;QAC9E;AAAO,aAAA,IAAI,eAAe,IAAI,KAAK,EAAE;YACnC,OAAO,KAAK,CAAC,aAAa;QAC5B;AAAO,aAAA,IAAI,eAAe,IAAI,KAAK,EAAE;YACnC,OAAO,KAAK,CAAC,aAAa;QAC5B;AAAO,aAAA,IAAI,gBAAgB,IAAI,KAAK,EAAE;YACpC,OAAO,KAAK,CAAC,cAAc;QAC7B;AAEA,QAAA,OAAO,IAAI;IACb;AAEU,IAAA,WAAW,CAAC,MAAc,EAAA;AAClC,QAAA,OAAO,GAAG,MAAM,CAAA,CAAA,EAAI,SAAS,EAAE,EAAE;IACnC;uGAtEoB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,UAAU;AAC/B,qBAAA;AACF,iBAAA;;;AC3BD;;;;;;;;;;;;;;AAcG;MAwBU,QAAQ,CAAA;AACX,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,OAAO,iBAAiB,GAAG,KAAK;IAEhC,UAAU,GAAiC,IAAI;IAC/C,WAAW,GAAG,KAAK;AAElB,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAAmB;AAC7C,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAA0B;AAE7D,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACpD,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AACtC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEjC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;YAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC9C,YAAA,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,gBAAgB;AAC5C,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACjC,YAAA,QAAQ,CAAC,iBAAiB,GAAG,IAAI;QACnC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,KAAK,EAAE;IACd;AAEQ,IAAA,MAAM,MAAM,CAAC,SAA0B,EAAE,SAAiC,EAAA;QAChF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAC3C,IAAI,YAAY,GAAyB,IAAI;QAC7C,IAAI,iBAAiB,GAAqB,IAAI;AAE9C,QAAA,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE;AAChC,YAAA,YAAY,GAAG,MAAM,MAAM,EAAE;QAC/B;AAAO,aAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACrC,YAAA,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE;AAClC,YAAA,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAgB,CAAC;QACvD;QAEA,IAAI,CAAC,KAAK,EAAE;AAEZ,QAAA,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrC,YAAA,MAAM,QAAQ,GAAG;AACf,gBAAA,YAAY,CAAC,WAAW,EAAE,MAAM,SAAS,CAAC;AAC1C,gBAAA,YAAY,CAAC,WAAW,EAAE,MAAM,SAAS,CAAC;gBAC1C,YAAY,CAAC,QAAQ,EAAE,MAAM,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC;aAC5D;YAED,IAAI,iBAAiB,EAAE;AACrB,gBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC;YACrC;YAEA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE;gBACpE,QAAQ;AACR,gBAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ;AACzC,aAAA,CAAC;QACJ;IACF;IAEQ,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;uGArEW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACxC,iBAAA;;;ACrCD;;;;;;;;;;;;;;AAcG;;ACdH;;;;;;;;;;;;;;AAcG;AAKG,SAAU,WAAW,CAAC,MAA0C,EAAA;AACpE,IAAA,OAAO,wBAAwB,CAAC;QAC9B,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE;QAC9C,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE;AAC3C,KAAA,CAAC;AACJ;;ACxBA;;;;;;;;;;;;;;AAcG;AA4EG,MAAO,GAAI,SAAQ,gBAA+B,CAAA;AAC7C,IAAA,SAAS,GAAG,KAAK,CAAiC,SAAS,qDAAC;AAC5D,IAAA,YAAY,GAAG,KAAK,CAAoC,OAAO,wDAAC;AAEtD,IAAA,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC3C,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG;QAC5B,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,SAAS,EAAE,CAAA,CAAE,GAAG,IAAI;QACnC,CAAC,CAAA,WAAA,EAAc,IAAI,CAAC,YAAY,EAAE,CAAA,CAAE,GAAG,IAAI;AAC5C,KAAA,CAAC,mDAAC;uGARQ,GAAG,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAH,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,GAAG,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARJ;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,whBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjES,QAAQ,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAmEP,GAAG,EAAA,UAAA,EAAA,CAAA;kBArEf,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,OAAA,EACX,CAAC,QAAQ,CAAC,EAAA,IAAA,EACb;AACJ,wBAAA,kBAAkB,EAAE,aAAa;AACjC,wBAAA,qBAAqB,EAAE,gBAAgB;qBACxC,EAAA,QAAA,EAuDS;;;;;;AAMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,whBAAA,CAAA,EAAA;;;ACxFH;;;;;;;;;;;;;;AAcG;AAwEG,MAAO,MAAO,SAAQ,gBAAkC,CAAA;AACnD,IAAA,SAAS,GAAG,KAAK,CAAoC,SAAS,qDAAC;AAC/D,IAAA,YAAY,GAAG,KAAK,CAAuC,OAAO,wDAAC;AAEzD,IAAA,OAAO,GAAG,QAAQ,CAAC,OAAO;AAC3C,QAAA,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;QAC/B,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,SAAS,EAAE,CAAA,CAAE,GAAG,IAAI;QACnC,CAAC,CAAA,WAAA,EAAc,IAAI,CAAC,YAAY,EAAE,CAAA,CAAE,GAAG,IAAI;AAC5C,KAAA,CAAC,mDAAC;uGARQ,MAAM,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARP;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2hBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA7DS,QAAQ,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FA+DP,MAAM,EAAA,UAAA,EAAA,CAAA;kBAjElB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EACd,CAAC,QAAQ,CAAC,EAAA,QAAA,EAuDT;;;;;;AAMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,2hBAAA,CAAA,EAAA;;;ACpFH;;;;;;;;;;;;;;AAcG;MAOU,gBAAgB,CAAA;AACnB,IAAA,gBAAgB,GAAG,IAAI,GAAG,EAAe;AACzC,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;IAEhC,UAAU,GAAG,UAAU,CAAC;AAC9B,QAAA,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,KAAI;AACvB,YAAA,IAAI,IAAI,KAAK,MAAM,EAAE;gBACnB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,gBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;AACjC,gBAAA,MAAM,CAAC,MAAM,GAAG,GAAG;AACnB,gBAAA,MAAM,CAAC,OAAO,GAAG,EAAE;gBACnB,OAAO,MAAM,CAAC,SAAS;YACzB;AAEA,YAAA,OAAO,GAAG;QACZ,CAAC;AACF,KAAA,CAAC;IAEF,MAAM,CAAC,KAAa,EAAE,WAAsC,EAAA;QAC1D,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;QACpC;QACA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC;IAClE;AAEQ,IAAA,gBAAgB,CAAC,WAAqC,EAAA;AAC5D,QAAA,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAI;AACrD,YAAA,IAAI,SAAS;YACb,QAAQ,GAAG;AACT,gBAAA,KAAK,GAAG;oBACN,SAAS,GAAG,WAAW;oBACvB;AACF,gBAAA,KAAK,IAAI;AACT,gBAAA,KAAK,IAAI;AACT,gBAAA,KAAK,IAAI;AACT,gBAAA,KAAK,IAAI;AACT,gBAAA,KAAK,IAAI;AACT,gBAAA,KAAK,IAAI;oBACP,SAAS,GAAG,SAAS;oBACrB;AACF,gBAAA,KAAK,IAAI;oBACP,SAAS,GAAG,aAAa;oBACzB;AACF,gBAAA,KAAK,IAAI;oBACP,SAAS,GAAG,cAAc;oBAC1B;AACF,gBAAA,KAAK,IAAI;oBACP,SAAS,GAAG,WAAW;oBACvB;AACF,gBAAA,KAAK,GAAG;oBACN,SAAS,GAAG,MAAM;oBAClB;AACF,gBAAA,KAAK,QAAQ;oBACX,SAAS,GAAG,QAAQ;oBACpB;AACF,gBAAA,KAAK,IAAI;oBACP,SAAS,GAAG,IAAI;oBAChB;;YAGJ,IAAI,CAAC,SAAS,EAAE;gBACd;YACF;AAEA,YAAA,MAAM,GAAG,GAAG,CAAA,EAAG,SAAS,OAAO;AAC/B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;YACpD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;YAExC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,KAAI;AACxE,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACzB,gBAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,oBAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;gBAChC;gBAEA,IAAI,QAAQ,EAAE;AACZ,oBAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC;gBAC7D;qBAAO;oBACL,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;gBAC/C;AACF,YAAA,CAAC;AACH,QAAA,CAAC,CAAC;IACJ;IAEQ,kBAAkB,GAAA;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ;QAChD;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;IAC/B;uGA3FW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA;;2FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACpBlC;;;;;;;;;;;;;;AAcG;AA2CG,MAAO,IAAK,SAAQ,gBAAgB,CAAA;AAChC,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC1C,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAiC;AACtD,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAA0C;AAEnE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,IAAI,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAE/C,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,YAAA,OAAO,SAAS;QAClB;QAEA,QAAQ,SAAS;AACf,YAAA,KAAK,IAAI;AACP,gBAAA,KAAK,GAAG,CAAA,EAAA,EAAK,KAAK,CAAA,CAAE;gBACpB;AACF,YAAA,KAAK,IAAI;AACP,gBAAA,KAAK,GAAG,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE;gBACrB;AACF,YAAA,KAAK,IAAI;AACP,gBAAA,KAAK,GAAG,CAAA,IAAA,EAAO,KAAK,CAAA,CAAE;gBACtB;AACF,YAAA,KAAK,IAAI;AACP,gBAAA,KAAK,GAAG,CAAA,KAAA,EAAQ,KAAK,CAAA,CAAE;gBACvB;AACF,YAAA,KAAK,IAAI;AACP,gBAAA,KAAK,GAAG,CAAA,MAAA,EAAS,KAAK,CAAA,CAAE;gBACxB;AACF,YAAA,KAAK,SAAS;AACZ,gBAAA,KAAK,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG;gBACpB;AACF,YAAA;AACE,gBAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBACrB;;AAGJ,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CACjC,KAAK,EACL,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAChE;AACH,IAAA,CAAC,wDAAC;AAEQ,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAElC,QAAA,OAAO,MAAM,CAAC,KAAK,CACjB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAC9B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CACvD;AACH,IAAA,CAAC,mDAAC;AAEQ,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACzC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI;QAEhD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,gBAAgB,GAA2B,EAAE;AAEjD,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;AAChC,YAAA,gBAAgB,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;QAChD;aAAO;YACL,gBAAgB,GAAG,MAAM;QAC3B;AAEA,QAAA,OAAO,gBAAgB;AACzB,IAAA,CAAC,4DAAC;AAEM,IAAA,eAAe,CAAC,MAAe,EAAA;AACrC,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAClE,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC;AACxE,QAAA,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IAC3C;uGA9EW,IAAI,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAJ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAI,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBL;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iJAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAkBU,IAAI,EAAA,UAAA,EAAA,CAAA;kBA1BhB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,QAAA,EACX;;;;;;GAMT,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,iJAAA,CAAA,EAAA;;;ACxCvC;;;;;;;;;;;;;;AAcG;AASI,MAAM,eAAe,GAAY;AACtC,IAAA,GAAG,EAAE;AACH,QAAA,IAAI,EAAE,MAAM,GAAG;AACf,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAsB,CAAC,UAAU;YACrD,OAAO;gBACL,YAAY,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC,SAAS,IAAI,SAAS,CAAC;gBAClE,YAAY,CAAC,cAAc,EAAE,MAAM,UAAU,CAAC,YAAY,IAAI,OAAO,CAAC;aACvE;QACH,CAAC;AACF,KAAA;AAED,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,MAAM,MAAM;AAClB,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAyB,CAAC,UAAU;YACxD,OAAO;gBACL,YAAY,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC,SAAS,IAAI,SAAS,CAAC;gBAClE,YAAY,CAAC,cAAc,EAAE,MAAM,UAAU,CAAC,YAAY,IAAI,OAAO,CAAC;aACvE;QACH,CAAC;AACF,KAAA;AAED,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,MAAM,OAAO,kCAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAChD,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAuB,CAAC,UAAU;AACtD,YAAA,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC;QAC9E,CAAC;AACF,KAAA;AAED,IAAA,IAAI,EAAE,MAAM,OAAO,kCAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAEhD,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,MAAM,OAAO,mCAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AAClD,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAwB,CAAC,UAAU;YACvD,OAAO;gBACL,YAAY,CAAC,KAAK,EAAE,MAAM,UAAU,CAAC,GAAG,CAAC;gBACzC,YAAY,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC,SAAS,CAAC;aACtD;QACH,CAAC;AACF,KAAA;AAED,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,MAAM,OAAO,kCAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAChD,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAuB,CAAC,UAAU;AACtD,YAAA,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;AACF,KAAA;AAED,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,MAAM,OAAO,mCAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AAClD,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAwB,CAAC,UAAU;AACvD,YAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;AACF,KAAA;AAED,IAAA,WAAW,EAAE;AACX,QAAA,IAAI,EAAE,MAAM,OAAO,mCAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AAClD,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAA8B,CAAC,UAAU;AAC7D,YAAA,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;AACF,KAAA;AAED,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,MAAM,IAAI;AAChB,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAuB,CAAC,UAAU;YACtD,OAAO;gBACL,YAAY,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC;gBAC3C,YAAY,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC,SAAS,IAAI,IAAI,CAAC;aAC9D;QACH,CAAC;AACF,KAAA;AAED,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,MAAM,OAAO,oCAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACpD,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAyB,CAAC,UAAU;AACxD,YAAA,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1D,CAAC;AACF,KAAA;AAED,IAAA,OAAO,EAAE,MAAM,OAAO,qCAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAEzD,IAAA,cAAc,EAAE;AACd,QAAA,IAAI,EAAE,MAAM,OAAO,6CAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;AACrE,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAiC,CAAC,UAAU;YAChE,OAAO;gBACL,YAAY,CAAC,SAAS,EAAE,MAAM,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;gBACvD,YAAY,CAAC,OAAO,EAAE,MAAM,UAAU,CAAC,UAAU,CAAC;gBAClD,YAAY,CAAC,aAAa,EAAE,MAAM,gBAAgB,CAAC;aACpD;QACH,CAAC;AACF,KAAA;AAED,IAAA,SAAS,EAAE;AACT,QAAA,IAAI,EAAE,MAAM,OAAO,wCAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC3D,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAA4B,CAAC,UAAU;YAC3D,OAAO;gBACL,YAAY,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC;gBACnD,YAAY,CAAC,OAAO,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC;gBAC7C,YAAY,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC;aACjD;QACH,CAAC;AACF,KAAA;AAED,IAAA,aAAa,EAAE;AACb,QAAA,IAAI,EAAE,MAAM,OAAO,4CAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AACnE,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAgC,CAAC,UAAU;YAC/D,OAAO;gBACL,YAAY,CAAC,YAAY,EAAE,MAAM,UAAU,CAAC,UAAU,CAAC;gBACvD,YAAY,CAAC,YAAY,EAAE,MAAM,UAAU,CAAC,UAAU,CAAC;gBACvD,YAAY,CAAC,OAAO,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC;aAC9C;QACH,CAAC;AACF,KAAA;AAED,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE,MAAM,OAAO,sCAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AACxD,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAA2B,CAAC,UAAU;YAC1D,OAAO;gBACL,YAAY,CAAC,OAAO,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC;gBAC7C,YAAY,CAAC,OAAO,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC;aAC9C;QACH,CAAC;AACF,KAAA;AAED,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAE,MAAM,OAAO,oCAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACpD,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAyB,CAAC,UAAU;YACxD,OAAO;gBACL,YAAY,CAAC,OAAO,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC;gBAC7C,YAAY,CAAC,UAAU,EAAE,MAAM,UAAU,CAAC,QAAQ,CAAC;gBACnD,YAAY,CAAC,UAAU,EAAE,MAAM,UAAU,CAAC,QAAQ,CAAC;gBACnD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;aAChC;QACH,CAAC;AACF,KAAA;AAED,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,MAAM,OAAO,kCAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAChD,QAAA,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,YAAA,MAAM,UAAU,GAAI,IAAuB,CAAC,UAAU;AACtD,YAAA,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC;AACF,KAAA;AAED,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAE,MAAM,OAAO,mCAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AAClD,QAAA,QAAQ,EAAE,MAAM,EAAE;AACnB,KAAA;;;ACvLH;;;;;;;;;;;;;;AAcG;MA8BU,OAAO,CAAA;AACT,IAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,oDAA0B;AACpD,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAwB;AAEtC,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAC9B,MAAM,MAAM,GAA2B,EAAE;AAEzC,QAAA,IAAI,OAAO,EAAE,MAAM,EAAE;AACnB,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACzD,QAAQ,GAAG;;;;;;;;;;;oBAWT,KAAK,cAAc,EAAE;AACnB,wBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,SAAS;AAC7B,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,iBAAiB;AAC/D,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,iBAAiB;AAC/D,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK;AACxB,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAChE,wBAAA,MAAM,CAAC,OAAO,CAAC,GAAG,CAAA,mBAAA,EAAsB,KAAK,kBAAkB;AAC/D,wBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ;wBACxB;oBACF;oBAEA,KAAK,MAAM,EAAE;AACX,wBAAA,MAAM,CAAC,eAAe,CAAC,GAAG,KAAK;AAC/B,wBAAA,MAAM,CAAC,oBAAoB,CAAC,GAAG,KAAK;wBACpC;oBACF;;YAEJ;QACF;AAEA,QAAA,OAAO,MAAM;AACf,IAAA,CAAC,kDAAC;uGArDS,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBR;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EARS,QAAQ,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAsBP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAxBnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EACf,CAAC,QAAQ,CAAC,EAAA,QAAA,EACT;;;;;;;GAOT,EAAA,IAAA,EAUK;AACJ,wBAAA,SAAS,EAAE,UAAU;AACtB,qBAAA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA;;;AC1CH;;;;;;;;;;;;;;AAcG;;ACdH;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a2ui/angular",
|
|
3
|
-
"version": "0.8.
|
|
4
|
-
"scripts": {
|
|
5
|
-
"build": "ng build"
|
|
6
|
-
},
|
|
3
|
+
"version": "0.8.2",
|
|
7
4
|
"dependencies": {
|
|
8
5
|
"@a2ui/lit": "file:../lit",
|
|
9
6
|
"markdown-it": "^14.1.0",
|
|
@@ -14,46 +11,16 @@
|
|
|
14
11
|
"@angular/core": "^21.0.0",
|
|
15
12
|
"@angular/platform-browser": "^21.0.0"
|
|
16
13
|
},
|
|
17
|
-
"devDependencies": {
|
|
18
|
-
"@angular/build": "^21.0.2",
|
|
19
|
-
"@angular/cli": "^21.0.2",
|
|
20
|
-
"@angular/compiler": "^21.0.0",
|
|
21
|
-
"@angular/compiler-cli": "^21.0.3",
|
|
22
|
-
"@angular/core": "^21.0.0",
|
|
23
|
-
"@types/express": "^5.0.1",
|
|
24
|
-
"@types/jasmine": "~5.1.0",
|
|
25
|
-
"@types/markdown-it": "^14.1.2",
|
|
26
|
-
"@types/node": "^20.17.19",
|
|
27
|
-
"@types/uuid": "^10.0.0",
|
|
28
|
-
"@vitest/browser": "^4.0.15",
|
|
29
|
-
"cypress": "^15.6.0",
|
|
30
|
-
"google-artifactregistry-auth": "^3.5.0",
|
|
31
|
-
"jasmine-core": "~5.9.0",
|
|
32
|
-
"jsdom": "^27.2.0",
|
|
33
|
-
"karma": "^6.4.4",
|
|
34
|
-
"karma-chrome-launcher": "^3.2.0",
|
|
35
|
-
"karma-coverage": "^2.2.1",
|
|
36
|
-
"karma-jasmine": "^5.1.0",
|
|
37
|
-
"karma-jasmine-html-reporter": "^2.1.0",
|
|
38
|
-
"ng-packagr": "^21.0.0",
|
|
39
|
-
"playwright": "^1.56.1",
|
|
40
|
-
"prettier": "^3.6.2",
|
|
41
|
-
"sass": "^1.93.2",
|
|
42
|
-
"tslib": "^2.8.1",
|
|
43
|
-
"typescript": "~5.9.2",
|
|
44
|
-
"vitest": "^4.0.15"
|
|
45
|
-
},
|
|
46
14
|
"sideEffects": false,
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
]
|
|
15
|
+
"module": "fesm2022/a2ui-angular.mjs",
|
|
16
|
+
"typings": "types/a2ui-angular.d.ts",
|
|
17
|
+
"exports": {
|
|
18
|
+
"./package.json": {
|
|
19
|
+
"default": "./package.json"
|
|
20
|
+
},
|
|
21
|
+
".": {
|
|
22
|
+
"types": "./types/a2ui-angular.d.ts",
|
|
23
|
+
"default": "./fesm2022/a2ui-angular.mjs"
|
|
24
|
+
}
|
|
58
25
|
}
|
|
59
|
-
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { Type, Binding, InjectionToken, OnDestroy, EnvironmentProviders } from '@angular/core';
|
|
3
|
+
import { Data, Types, Primitives } from '@a2ui/lit/0.8';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
|
|
6
|
+
interface DispatchedEvent {
|
|
7
|
+
message: Types.A2UIClientEventMessage;
|
|
8
|
+
completion: Subject<Types.ServerToClientMessage[]>;
|
|
9
|
+
}
|
|
10
|
+
declare class MessageProcessor extends Data.A2uiMessageProcessor {
|
|
11
|
+
readonly events: Subject<DispatchedEvent>;
|
|
12
|
+
setData(node: Types.AnyComponentNode, relativePath: string, value: Types.DataValue, surfaceId?: Types.SurfaceID | null): void;
|
|
13
|
+
dispatch(message: Types.A2UIClientEventMessage): Promise<Types.ServerToClientMessage[]>;
|
|
14
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MessageProcessor, never>;
|
|
15
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<MessageProcessor>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface A2TextPayload {
|
|
19
|
+
kind: 'text';
|
|
20
|
+
text: string;
|
|
21
|
+
}
|
|
22
|
+
interface A2DataPayload {
|
|
23
|
+
kind: 'data';
|
|
24
|
+
data: Types.ServerToClientMessage;
|
|
25
|
+
}
|
|
26
|
+
type A2AServerPayload = Array<A2DataPayload | A2TextPayload> | {
|
|
27
|
+
error: string;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
declare abstract class DynamicComponent<T extends Types.AnyComponentNode = Types.AnyComponentNode> {
|
|
31
|
+
protected readonly processor: MessageProcessor;
|
|
32
|
+
protected readonly theme: Types.Theme;
|
|
33
|
+
readonly surfaceId: _angular_core.InputSignal<string | null>;
|
|
34
|
+
readonly component: _angular_core.InputSignal<T>;
|
|
35
|
+
readonly weight: _angular_core.InputSignal<string | number>;
|
|
36
|
+
protected sendAction(action: Types.Action): Promise<Types.ServerToClientMessage[]>;
|
|
37
|
+
protected resolvePrimitive(value: Primitives.StringValue | null): string | null;
|
|
38
|
+
protected resolvePrimitive(value: Primitives.BooleanValue | null): boolean | null;
|
|
39
|
+
protected resolvePrimitive(value: Primitives.NumberValue | null): number | null;
|
|
40
|
+
protected getUniqueId(prefix: string): string;
|
|
41
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicComponent<any>, never>;
|
|
42
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DynamicComponent<any>, never, never, { "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "component": { "alias": "component"; "required": true; "isSignal": true; }; "weight": { "alias": "weight"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
type CatalogLoader = () => Promise<Type<DynamicComponent<any>>> | Type<DynamicComponent<any>>;
|
|
46
|
+
type CatalogEntry<T extends Types.AnyComponentNode> = CatalogLoader | {
|
|
47
|
+
type: CatalogLoader;
|
|
48
|
+
bindings: (data: T) => Binding[];
|
|
49
|
+
};
|
|
50
|
+
interface Catalog {
|
|
51
|
+
[key: string]: CatalogEntry<Types.AnyComponentNode>;
|
|
52
|
+
}
|
|
53
|
+
declare const Catalog: InjectionToken<Catalog>;
|
|
54
|
+
|
|
55
|
+
declare class Renderer implements OnDestroy {
|
|
56
|
+
private viewContainerRef;
|
|
57
|
+
private catalog;
|
|
58
|
+
private static hasInsertedStyles;
|
|
59
|
+
private currentRef;
|
|
60
|
+
private isDestroyed;
|
|
61
|
+
readonly surfaceId: _angular_core.InputSignal<string>;
|
|
62
|
+
readonly component: _angular_core.InputSignal<Types.AnyComponentNode>;
|
|
63
|
+
constructor();
|
|
64
|
+
ngOnDestroy(): void;
|
|
65
|
+
private render;
|
|
66
|
+
private clear;
|
|
67
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Renderer, never>;
|
|
68
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Renderer, "ng-container[a2ui-renderer]", never, { "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "component": { "alias": "component"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
declare const Theme: InjectionToken<Types.Theme>;
|
|
72
|
+
type Theme = Types.Theme;
|
|
73
|
+
|
|
74
|
+
declare function provideA2UI(config: {
|
|
75
|
+
catalog: Catalog;
|
|
76
|
+
theme: Theme;
|
|
77
|
+
}): EnvironmentProviders;
|
|
78
|
+
|
|
79
|
+
declare const DEFAULT_CATALOG: Catalog;
|
|
80
|
+
|
|
81
|
+
declare class Surface {
|
|
82
|
+
readonly surfaceId: _angular_core.InputSignal<string | null>;
|
|
83
|
+
readonly surface: _angular_core.InputSignal<Types.Surface | null>;
|
|
84
|
+
protected readonly styles: _angular_core.Signal<Record<string, string>>;
|
|
85
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Surface, never>;
|
|
86
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Surface, "a2ui-surface", never, { "surfaceId": { "alias": "surfaceId"; "required": true; "isSignal": true; }; "surface": { "alias": "surface"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export { Catalog, DEFAULT_CATALOG, DynamicComponent, MessageProcessor, Renderer, Surface, Theme, provideA2UI };
|
|
90
|
+
export type { A2AServerPayload, A2DataPayload, A2TextPayload, CatalogEntry, CatalogLoader, DispatchedEvent };
|
package/angular.json
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
|
|
3
|
-
"version": 1,
|
|
4
|
-
"projects": {
|
|
5
|
-
"lib": {
|
|
6
|
-
"projectType": "library",
|
|
7
|
-
"root": ".",
|
|
8
|
-
"sourceRoot": "./src",
|
|
9
|
-
"prefix": "lib",
|
|
10
|
-
"architect": {
|
|
11
|
-
"build": {
|
|
12
|
-
"builder": "@angular/build:ng-packagr",
|
|
13
|
-
"configurations": {
|
|
14
|
-
"production": {
|
|
15
|
-
"tsConfig": "./tsconfig.lib.prod.json"
|
|
16
|
-
},
|
|
17
|
-
"development": {
|
|
18
|
-
"tsConfig": "./tsconfig.lib.json"
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
"defaultConfiguration": "production"
|
|
22
|
-
},
|
|
23
|
-
"test": {
|
|
24
|
-
"builder": "@angular/build:karma",
|
|
25
|
-
"options": {
|
|
26
|
-
"tsConfig": "./tsconfig.spec.json"
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
"cli": {
|
|
33
|
-
"analytics": false
|
|
34
|
-
}
|
|
35
|
-
}
|
package/ng-package.json
DELETED
package/src/lib/catalog/audio.ts
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright 2025 Google LLC
|
|
3
|
-
|
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
you may not use this file except in compliance with the License.
|
|
6
|
-
You may obtain a copy of the License at
|
|
7
|
-
|
|
8
|
-
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
|
|
10
|
-
Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
See the License for the specific language governing permissions and
|
|
14
|
-
limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import { Component, computed, input } from '@angular/core';
|
|
18
|
-
import { DynamicComponent } from '../rendering/dynamic-component';
|
|
19
|
-
import { Primitives } from '@a2ui/lit/0.8';
|
|
20
|
-
|
|
21
|
-
@Component({
|
|
22
|
-
selector: 'a2ui-audio',
|
|
23
|
-
template: `
|
|
24
|
-
@let resolvedUrl = this.resolvedUrl();
|
|
25
|
-
|
|
26
|
-
@if (resolvedUrl) {
|
|
27
|
-
<section [class]="theme.components.AudioPlayer" [style]="theme.additionalStyles?.AudioPlayer">
|
|
28
|
-
<audio controls [src]="resolvedUrl"></audio>
|
|
29
|
-
</section>
|
|
30
|
-
}
|
|
31
|
-
`,
|
|
32
|
-
styles: `
|
|
33
|
-
:host {
|
|
34
|
-
display: block;
|
|
35
|
-
flex: var(--weight);
|
|
36
|
-
min-height: 0;
|
|
37
|
-
overflow: auto;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
audio {
|
|
41
|
-
display: block;
|
|
42
|
-
width: 100%;
|
|
43
|
-
box-sizing: border-box;
|
|
44
|
-
}
|
|
45
|
-
`
|
|
46
|
-
})
|
|
47
|
-
export class Audio extends DynamicComponent {
|
|
48
|
-
readonly url = input.required<Primitives.StringValue | null>();
|
|
49
|
-
protected readonly resolvedUrl = computed(() => this.resolvePrimitive(this.url()));
|
|
50
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright 2025 Google LLC
|
|
3
|
-
|
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
you may not use this file except in compliance with the License.
|
|
6
|
-
You may obtain a copy of the License at
|
|
7
|
-
|
|
8
|
-
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
|
|
10
|
-
Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
See the License for the specific language governing permissions and
|
|
14
|
-
limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import { Component, input } from '@angular/core';
|
|
18
|
-
import { Types } from '@a2ui/lit/0.8';
|
|
19
|
-
import { DynamicComponent } from '../rendering/dynamic-component';
|
|
20
|
-
import { Renderer } from '../rendering/renderer';
|
|
21
|
-
|
|
22
|
-
@Component({
|
|
23
|
-
selector: 'a2ui-button',
|
|
24
|
-
imports: [Renderer],
|
|
25
|
-
template: `
|
|
26
|
-
<button
|
|
27
|
-
[class]="theme.components.Button"
|
|
28
|
-
[style]="theme.additionalStyles?.Button"
|
|
29
|
-
(click)="handleClick()"
|
|
30
|
-
>
|
|
31
|
-
<ng-container
|
|
32
|
-
a2ui-renderer
|
|
33
|
-
[surfaceId]="surfaceId()!"
|
|
34
|
-
[component]="component().properties.child"
|
|
35
|
-
/>
|
|
36
|
-
</button>
|
|
37
|
-
`,
|
|
38
|
-
styles: `
|
|
39
|
-
:host {
|
|
40
|
-
display: block;
|
|
41
|
-
flex: var(--weight);
|
|
42
|
-
min-height: 0;
|
|
43
|
-
}
|
|
44
|
-
`,
|
|
45
|
-
})
|
|
46
|
-
export class Button extends DynamicComponent<Types.ButtonNode> {
|
|
47
|
-
readonly action = input.required<Types.Action | null>();
|
|
48
|
-
|
|
49
|
-
protected handleClick() {
|
|
50
|
-
const action = this.action();
|
|
51
|
-
|
|
52
|
-
if (action) {
|
|
53
|
-
super.sendAction(action);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
package/src/lib/catalog/card.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright 2025 Google LLC
|
|
3
|
-
|
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
you may not use this file except in compliance with the License.
|
|
6
|
-
You may obtain a copy of the License at
|
|
7
|
-
|
|
8
|
-
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
|
|
10
|
-
Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
See the License for the specific language governing permissions and
|
|
14
|
-
limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import { Component, ViewEncapsulation } from '@angular/core';
|
|
18
|
-
import { DynamicComponent } from '../rendering/dynamic-component';
|
|
19
|
-
import { Renderer } from '../rendering/renderer';
|
|
20
|
-
import { Types } from '@a2ui/lit/0.8';
|
|
21
|
-
|
|
22
|
-
@Component({
|
|
23
|
-
selector: 'a2ui-card',
|
|
24
|
-
imports: [Renderer],
|
|
25
|
-
encapsulation: ViewEncapsulation.None,
|
|
26
|
-
styles: `
|
|
27
|
-
a2ui-card {
|
|
28
|
-
display: block;
|
|
29
|
-
flex: var(--weight);
|
|
30
|
-
min-height: 0;
|
|
31
|
-
overflow: auto;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
a2ui-card > section {
|
|
35
|
-
height: 100%;
|
|
36
|
-
width: 100%;
|
|
37
|
-
min-height: 0;
|
|
38
|
-
overflow: auto;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
a2ui-card > section > * {
|
|
42
|
-
height: 100%;
|
|
43
|
-
width: 100%;
|
|
44
|
-
}
|
|
45
|
-
`,
|
|
46
|
-
template: `
|
|
47
|
-
@let properties = component().properties;
|
|
48
|
-
@let children = properties.children || [properties.child];
|
|
49
|
-
|
|
50
|
-
<section [class]="theme.components.Card" [style]="theme.additionalStyles?.Card">
|
|
51
|
-
@for (child of children; track child) {
|
|
52
|
-
<ng-container a2ui-renderer [surfaceId]="surfaceId()!" [component]="child" />
|
|
53
|
-
}
|
|
54
|
-
</section>
|
|
55
|
-
`,
|
|
56
|
-
})
|
|
57
|
-
export class Card extends DynamicComponent<Types.CardNode> { }
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright 2025 Google LLC
|
|
3
|
-
|
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
you may not use this file except in compliance with the License.
|
|
6
|
-
You may obtain a copy of the License at
|
|
7
|
-
|
|
8
|
-
https://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
|
|
10
|
-
Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
See the License for the specific language governing permissions and
|
|
14
|
-
limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import { Component, computed, input } from '@angular/core';
|
|
18
|
-
import { DynamicComponent } from '../rendering/dynamic-component';
|
|
19
|
-
import { Primitives } from '@a2ui/lit/0.8';
|
|
20
|
-
|
|
21
|
-
@Component({
|
|
22
|
-
selector: 'a2ui-checkbox',
|
|
23
|
-
template: `
|
|
24
|
-
<section
|
|
25
|
-
[class]="theme.components.CheckBox.container"
|
|
26
|
-
[style]="theme.additionalStyles?.CheckBox"
|
|
27
|
-
>
|
|
28
|
-
<input
|
|
29
|
-
autocomplete="off"
|
|
30
|
-
type="checkbox"
|
|
31
|
-
[id]="inputId"
|
|
32
|
-
[checked]="inputChecked()"
|
|
33
|
-
[class]="theme.components.CheckBox.element"
|
|
34
|
-
(change)="handleChange($event)"
|
|
35
|
-
/>
|
|
36
|
-
|
|
37
|
-
<label [htmlFor]="inputId" [class]="theme.components.CheckBox.label">{{
|
|
38
|
-
resolvedLabel()
|
|
39
|
-
}}</label>
|
|
40
|
-
</section>
|
|
41
|
-
`,
|
|
42
|
-
styles: `
|
|
43
|
-
:host {
|
|
44
|
-
display: block;
|
|
45
|
-
flex: var(--weight);
|
|
46
|
-
min-height: 0;
|
|
47
|
-
overflow: auto;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
input {
|
|
51
|
-
display: block;
|
|
52
|
-
width: 100%;
|
|
53
|
-
}
|
|
54
|
-
`,
|
|
55
|
-
})
|
|
56
|
-
export class Checkbox extends DynamicComponent {
|
|
57
|
-
readonly value = input.required<Primitives.BooleanValue | null>();
|
|
58
|
-
readonly label = input.required<Primitives.StringValue | null>();
|
|
59
|
-
|
|
60
|
-
protected inputChecked = computed(() => super.resolvePrimitive(this.value()) ?? false);
|
|
61
|
-
protected resolvedLabel = computed(() => super.resolvePrimitive(this.label()));
|
|
62
|
-
protected inputId = super.getUniqueId('a2ui-checkbox');
|
|
63
|
-
|
|
64
|
-
protected handleChange(event: Event) {
|
|
65
|
-
const path = this.value()?.path;
|
|
66
|
-
|
|
67
|
-
if (!(event.target instanceof HTMLInputElement) || !path) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
this.processor.setData(this.component(), path, event.target.checked, this.surfaceId());
|
|
72
|
-
}
|
|
73
|
-
}
|