@copilotkit/a2ui-renderer
Version:
A2UI Renderer for CopilotKit - render A2UI surfaces in React applications
1 lines • 3.54 kB
Source Map (JSON)
{"version":3,"file":"bound-component.cjs","names":["LitElement","GenericBinder","nothing"],"sources":["../../src/web-components/bound-component.ts"],"sourcesContent":["import { LitElement, nothing } from \"lit\";\nimport { GenericBinder } from \"@a2ui/web_core/v0_9\";\nimport type { ComponentApi, ComponentContext } from \"@a2ui/web_core/v0_9\";\nimport type { LitRenderable, LitRendererFn } from \"./types\";\n\nexport class CpkA2uiBoundComponent extends LitElement {\n static properties = {\n api: { attribute: false },\n context: { attribute: false },\n buildChild: { attribute: false },\n renderFn: { attribute: false },\n setupState: { attribute: false },\n };\n\n api?: ComponentApi;\n context?: ComponentContext;\n buildChild?: (id: string, basePath?: string) => LitRenderable;\n renderFn?: LitRendererFn<any, any>;\n setupState?: () => unknown;\n\n private binder: GenericBinder<any> | null = null;\n private binderContext: ComponentContext | null = null;\n private propsSnapshot: Record<string, unknown> = {};\n private stateInitialized = false;\n private state: unknown;\n\n protected createRenderRoot() {\n return this;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.style.display = \"contents\";\n }\n\n disconnectedCallback(): void {\n this.disposeBinder();\n super.disconnectedCallback();\n }\n\n private disposeBinder(): void {\n this.binder?.dispose();\n this.binder = null;\n this.binderContext = null;\n }\n\n private ensureBinder(): void {\n if (!this.api || !this.context) return;\n if (this.binder && this.binderContext === this.context) return;\n\n this.disposeBinder();\n this.binderContext = this.context;\n this.binder = new GenericBinder(this.context, this.api.schema);\n this.propsSnapshot = this.binder.snapshot ?? {};\n this.binder.subscribe((props) => {\n this.propsSnapshot = props ?? {};\n this.requestUpdate();\n });\n }\n\n private ensureState(): void {\n if (this.stateInitialized) return;\n this.stateInitialized = true;\n this.state = this.setupState?.();\n }\n\n render() {\n this.ensureBinder();\n this.ensureState();\n if (!this.renderFn || !this.context || !this.buildChild) return nothing;\n return this.renderFn({\n props: this.propsSnapshot,\n buildChild: this.buildChild,\n context: this.context,\n state: this.state,\n requestUpdate: () => this.requestUpdate(),\n });\n }\n}\n"],"mappings":";;;;AAKA,IAAa,wBAAb,cAA2CA,eAAW;;;gBAeR;uBACK;uBACA,EAAE;0BACxB;;;oBAjBP;GAClB,KAAK,EAAE,WAAW,OAAO;GACzB,SAAS,EAAE,WAAW,OAAO;GAC7B,YAAY,EAAE,WAAW,OAAO;GAChC,UAAU,EAAE,WAAW,OAAO;GAC9B,YAAY,EAAE,WAAW,OAAO;GACjC;;CAcD,AAAU,mBAAmB;AAC3B,SAAO;;CAGT,oBAA0B;AACxB,QAAM,mBAAmB;AACzB,OAAK,MAAM,UAAU;;CAGvB,uBAA6B;AAC3B,OAAK,eAAe;AACpB,QAAM,sBAAsB;;CAG9B,AAAQ,gBAAsB;AAC5B,OAAK,QAAQ,SAAS;AACtB,OAAK,SAAS;AACd,OAAK,gBAAgB;;CAGvB,AAAQ,eAAqB;AAC3B,MAAI,CAAC,KAAK,OAAO,CAAC,KAAK,QAAS;AAChC,MAAI,KAAK,UAAU,KAAK,kBAAkB,KAAK,QAAS;AAExD,OAAK,eAAe;AACpB,OAAK,gBAAgB,KAAK;AAC1B,OAAK,SAAS,IAAIC,kCAAc,KAAK,SAAS,KAAK,IAAI,OAAO;AAC9D,OAAK,gBAAgB,KAAK,OAAO,YAAY,EAAE;AAC/C,OAAK,OAAO,WAAW,UAAU;AAC/B,QAAK,gBAAgB,SAAS,EAAE;AAChC,QAAK,eAAe;IACpB;;CAGJ,AAAQ,cAAoB;AAC1B,MAAI,KAAK,iBAAkB;AAC3B,OAAK,mBAAmB;AACxB,OAAK,QAAQ,KAAK,cAAc;;CAGlC,SAAS;AACP,OAAK,cAAc;AACnB,OAAK,aAAa;AAClB,MAAI,CAAC,KAAK,YAAY,CAAC,KAAK,WAAW,CAAC,KAAK,WAAY,QAAOC;AAChE,SAAO,KAAK,SAAS;GACnB,OAAO,KAAK;GACZ,YAAY,KAAK;GACjB,SAAS,KAAK;GACd,OAAO,KAAK;GACZ,qBAAqB,KAAK,eAAe;GAC1C,CAAC"}