@simple-table/angular 4.2.3 → 4.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -4
- package/dist/fesm2022/simple-table-angular.mjs +651 -98
- package/dist/fesm2022/simple-table-angular.mjs.map +1 -1
- package/dist/index.d.ts +126 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-table-angular.mjs","sources":["../../src/utils/wrapAngularRenderer.ts","../../src/buildVanillaConfig.ts","../../src/MountRegistry.ts","../../src/lib/SimpleTableComponent.ts","../../src/lib/provideSimpleTable.ts","../../src/index.ts","../../src/simple-table-angular.ts"],"sourcesContent":["import {\n ApplicationRef,\n createComponent,\n EnvironmentInjector,\n Injector,\n reflectComponentType,\n type ComponentRef,\n type Type,\n} from \"@angular/core\";\nimport type {\n ColumnEditorRowRendererProps as VanillaColumnEditorRowRendererProps,\n HeaderRendererProps as VanillaHeaderRendererProps,\n} from \"simple-table-core\";\nimport type { MountRegistry } from \"../MountRegistry\";\n\n/** Shared createComponent options for every Angular renderer mount. */\nexport type AngularMountOptions = {\n appRef: ApplicationRef;\n envInjector: EnvironmentInjector;\n registry?: MountRegistry;\n /** Parent ElementInjector so cells see providers on ancestors of `<simple-table>`. */\n elementInjector?: Injector;\n};\n\nconst ST_RENDERER_GENERATION = Symbol.for(\"simple-table.rendererGeneration\");\n\n/** Declared `@Input` / `input()` names for a component type (template + prop). */\nfunction declaredInputNames(component: Type<unknown>): Set<string> {\n const mirror = reflectComponentType(component);\n const names = new Set<string>();\n if (!mirror) return names;\n for (const input of mirror.inputs) {\n names.add(input.propName);\n names.add(input.templateName);\n }\n return names;\n}\n\n/** Apply props to a dynamic ComponentRef and flush change detection. */\nfunction applyComponentProps<P extends object>(\n componentRef: ComponentRef<P>,\n props: Partial<P>,\n): void {\n const ref = componentRef as ComponentRef<P> & {\n setInput?: (name: string, value: unknown) => void;\n };\n const inputs = declaredInputNames(componentRef.componentType as Type<unknown>);\n if (typeof ref.setInput === \"function\" && inputs.size > 0) {\n for (const [key, value] of Object.entries(props)) {\n if (inputs.has(key)) {\n ref.setInput(key, value);\n } else {\n // Core may pass undeclared keys; keep prior Object.assign behavior.\n (componentRef.instance as Record<string, unknown>)[key] = value;\n }\n }\n } else {\n Object.assign(componentRef.instance as object, props);\n }\n componentRef.changeDetectorRef.detectChanges();\n}\n\nfunction mountAngularComponent<P extends object>(\n component: Type<P>,\n props: Partial<P>,\n options: AngularMountOptions,\n host?: HTMLElement,\n): { host: HTMLElement; componentRef: ComponentRef<P> } {\n const el = host ?? document.createElement(\"div\");\n const componentRef = createComponent(component, {\n environmentInjector: options.envInjector,\n elementInjector: options.elementInjector,\n hostElement: el,\n });\n applyComponentProps(componentRef, props);\n options.appRef.attachView(componentRef.hostView);\n options.registry?.register(el, () => {\n options.appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n return { host: el, componentRef };\n}\n\n/**\n * Wraps an Angular standalone component into a function that returns an\n * HTMLElement, matching the vanilla renderer contract expected by\n * simple-table-core.\n *\n * Requires references to the running Angular ApplicationRef and\n * EnvironmentInjector so it can attach the dynamically-created component\n * to the change detection tree and trigger a synchronous flush before\n * returning the element to the vanilla rendering pipeline.\n *\n * Pass an optional {@link MountRegistry} so core's `onRendererHostDiscard` can\n * destroy the ComponentRef (including any CDK Overlay / floating UI) when the\n * host is discarded. The table adapter always supplies a registry; the public\n * helper used for one-shot static slots may omit it. Pass `elementInjector` so\n * dynamically created components see providers on ancestors of `<simple-table>`.\n *\n * These are injected automatically when the consumer uses\n * `provideSimpleTable()` in their application providers.\n */\nexport function wrapAngularRenderer<P extends object>(\n component: Type<P>,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n registry?: MountRegistry,\n elementInjector?: Injector,\n): (props: Partial<P>) => HTMLElement {\n const options: AngularMountOptions = {\n appRef,\n envInjector: injector,\n registry,\n elementInjector,\n };\n return (props: Partial<P>): HTMLElement => {\n return mountAngularComponent(component, props, options).host;\n };\n}\n\n/**\n * Header renderer wrapper that reuses one host element so sort/filter icon\n * refreshes update props in place instead of remounting the Angular subtree\n * and wiping local state. Mirrors Vue's {@link wrapVueHeaderRenderer} /\n * React's wrapReactHeaderRenderer.\n */\nexport function wrapAngularHeaderRenderer(\n component: Type<object>,\n options: AngularMountOptions,\n): (props: VanillaHeaderRendererProps) => HTMLElement {\n const registry = options.registry;\n let host: HTMLElement | null = null;\n let componentRef: ComponentRef<object> | null = null;\n return (props: VanillaHeaderRendererProps): HTMLElement => {\n if (host && componentRef && registry?.isRegistered(host)) {\n applyComponentProps(componentRef, props as object);\n return host;\n }\n const mounted = mountAngularComponent(component, props as object, options);\n host = mounted.host;\n componentRef = mounted.componentRef;\n return host;\n };\n}\n\n/**\n * Like {@link wrapAngularRenderer}, but reuses one wrapper per accessor so\n * unstable column rebuilds keep a stable function identity on ColumnDef.\n *\n * For `kind: \"header\"`, also reuses a single mount host so sort/filter\n * refreshes preserve Angular component state.\n */\nexport function wrapCachedAngularRenderer<P extends object>(\n component: Type<P>,\n options: AngularMountOptions,\n accessor: string,\n kind: \"cell\" | \"header\",\n): (props: Partial<P>) => HTMLElement {\n const registry = options.registry;\n if (!registry) {\n throw new Error(\"wrapCachedAngularRenderer requires a MountRegistry\");\n }\n const cache = kind === \"cell\" ? registry.cellRendererCache : registry.headerRendererCache;\n const existing = cache.get(accessor);\n if (existing) {\n if (kind === \"cell\" && existing.component !== component) {\n existing.component = component;\n const current = (existing.wrapped as any)[ST_RENDERER_GENERATION];\n (existing.wrapped as any)[ST_RENDERER_GENERATION] =\n (typeof current === \"number\" ? current : 0) + 1;\n } else {\n existing.component = component;\n }\n return existing.wrapped as (props: Partial<P>) => HTMLElement;\n }\n\n const slot: { component: Type<P>; wrapped: (props: Partial<P>) => HTMLElement } = {\n component,\n wrapped: null as unknown as (props: Partial<P>) => HTMLElement,\n };\n\n if (kind === \"header\") {\n let host: HTMLElement | null = null;\n let componentRef: ComponentRef<P> | null = null;\n const wrapped = (props: Partial<P>): HTMLElement => {\n if (host && componentRef && registry.isRegistered(host)) {\n applyComponentProps(componentRef, props);\n return host;\n }\n const mounted = mountAngularComponent(slot.component, props, options);\n host = mounted.host;\n componentRef = mounted.componentRef;\n return host;\n };\n slot.wrapped = wrapped;\n cache.set(accessor, slot);\n return wrapped;\n }\n\n const wrapped = (props: Partial<P>): HTMLElement => {\n return mountAngularComponent(slot.component, props, options).host;\n };\n slot.wrapped = wrapped;\n (wrapped as any)[ST_RENDERER_GENERATION] = 0;\n cache.set(accessor, slot);\n return wrapped;\n}\n\n/**\n * Column-editor row renderer: one host per `accessor` so popout list rebuilds\n * update in place instead of remounting Angular state (mirrors Vue/React).\n */\nexport function wrapAngularColumnEditorRowRenderer(\n component: Type<object>,\n options: AngularMountOptions,\n): (props: VanillaColumnEditorRowRendererProps) => HTMLElement {\n const registry = options.registry;\n const mounts = new Map<\n string,\n { host: HTMLElement; componentRef: ComponentRef<object> }\n >();\n return (props: VanillaColumnEditorRowRendererProps): HTMLElement => {\n const key = String(props.accessor);\n const existing = mounts.get(key);\n if (existing && registry?.isRegistered(existing.host)) {\n applyComponentProps(existing.componentRef, props as object);\n return existing.host;\n }\n const mounted = mountAngularComponent(component, props as object, options);\n mounts.set(key, mounted);\n return mounted.host;\n };\n}\n","import type { ApplicationRef, EnvironmentInjector, Injector } from \"@angular/core\";\nimport type { SimpleTableConfig, ColumnDef, ColumnEditorConfig } from \"simple-table-core\";\nimport { asRows, collectHeaderAccessors } from \"simple-table-core\";\nimport type {\n SimpleTableAngularProps,\n AngularColumnDef,\n AngularColumnEditorConfig,\n AngularDefaultRowData,\n AngularIconsConfig,\n} from \"./types\";\nimport type { MountRegistry } from \"./MountRegistry\";\nimport {\n wrapAngularRenderer,\n wrapCachedAngularRenderer,\n wrapAngularColumnEditorRowRenderer,\n type AngularMountOptions,\n} from \"./utils/wrapAngularRenderer\";\n\n/** Resolve column definitions. */\nexport function resolveAngularColumns<\n TData extends AngularDefaultRowData = AngularDefaultRowData,\n>(\n config: Pick<SimpleTableAngularProps<TData>, \"columns\">,\n): ReadonlyArray<AngularColumnDef<TData, any>> {\n const headers = config.columns;\n if (!headers) {\n throw new Error(\"SimpleTable requires `columns`\");\n }\n return headers;\n}\n\nfunction resolveTableEmptyState(\n value: NonNullable<SimpleTableAngularProps[\"tableEmptyStateRenderer\"]> | null,\n wrap: <P extends object>(component: any) => (props: Partial<P>) => HTMLElement,\n registry: MountRegistry,\n): HTMLElement | string | null {\n if (value === null) {\n if (registry.tableEmptyStateMount) {\n registry.disposeHost(registry.tableEmptyStateMount.host);\n registry.tableEmptyStateMount = null;\n }\n return null;\n }\n if ((value as { ɵcmp?: unknown }).ɵcmp) {\n const existing = registry.tableEmptyStateMount;\n if (\n existing &&\n existing.component === value &&\n registry.isRegistered(existing.host)\n ) {\n return existing.host;\n }\n if (existing) {\n registry.disposeHost(existing.host);\n registry.tableEmptyStateMount = null;\n }\n const host = wrap(value as any)({});\n registry.tableEmptyStateMount = { component: value, host };\n return host;\n }\n if (registry.tableEmptyStateMount) {\n registry.disposeHost(registry.tableEmptyStateMount.host);\n registry.tableEmptyStateMount = null;\n }\n return value as HTMLElement | string;\n}\n\nexport function buildVanillaConfig<TData extends AngularDefaultRowData = AngularDefaultRowData>(\n config: SimpleTableAngularProps<TData>,\n registry: MountRegistry,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n elementInjector?: Injector,\n): SimpleTableConfig {\n const {\n columns: _columns,\n rows,\n footerRenderer,\n emptyStateRenderer,\n errorStateRenderer,\n loadingStateRenderer,\n tableEmptyStateRenderer,\n headerDropdown,\n columnEditorConfig,\n icons,\n rowButtons,\n onColumnOrderChange,\n onColumnWidthChange,\n onHeaderEdit,\n onColumnSelect,\n enableColumnEditor,\n enableColumnEditorInitOpen,\n enablePagination,\n onTableReady,\n hoverRowBackground,\n oddColumnBackground,\n oddEvenRowBackground,\n ...rest\n } = config;\n\n const mountOptions: AngularMountOptions = {\n appRef,\n envInjector: injector,\n registry,\n elementInjector,\n };\n const wrap = <P extends object>(component: any) =>\n wrapAngularRenderer<P>(component, appRef, injector, registry, elementInjector);\n\n function transformIcons(iconsConfig: AngularIconsConfig): NonNullable<SimpleTableConfig[\"icons\"]> {\n const result: NonNullable<SimpleTableConfig[\"icons\"]> = {};\n for (const [key, value] of Object.entries(iconsConfig)) {\n if (value == null) continue;\n if (\n typeof value === \"string\" ||\n value instanceof HTMLElement ||\n value instanceof SVGSVGElement\n ) {\n (result as any)[key] = value;\n } else if ((value as any).ɵcmp) {\n (result as any)[key] = wrap(value as any)({});\n } else {\n (result as any)[key] = value;\n }\n }\n return result;\n }\n\n function transformColumnEditorConfig(cfg: AngularColumnEditorConfig): ColumnEditorConfig {\n const { rowRenderer, customRenderer, ...cfgRest } = cfg;\n return {\n ...cfgRest,\n ...(rowRenderer\n ? {\n rowRenderer: wrapAngularColumnEditorRowRenderer(\n rowRenderer as any,\n mountOptions,\n ) as any,\n }\n : {}),\n ...(customRenderer ? { customRenderer: wrap(customRenderer) as any } : {}),\n };\n }\n\n function transformHeader(header: AngularColumnDef<TData, any>): ColumnDef {\n const { cellRenderer, headerRenderer, children, nestedTable, ...headerRest } = header;\n const accessor = String(header.accessor);\n const transformed: ColumnDef = { ...(headerRest as any) };\n\n if (cellRenderer) {\n if ((cellRenderer as any).ɵcmp) {\n transformed.cellRenderer = wrapCachedAngularRenderer(\n cellRenderer as any,\n mountOptions,\n accessor,\n \"cell\",\n ) as any;\n } else {\n transformed.cellRenderer = cellRenderer as any;\n }\n }\n if (headerRenderer) {\n if ((headerRenderer as any).ɵcmp) {\n transformed.headerRenderer = wrapCachedAngularRenderer(\n headerRenderer as any,\n mountOptions,\n accessor,\n \"header\",\n ) as any;\n } else {\n transformed.headerRenderer = headerRenderer as any;\n }\n }\n if (children) transformed.children = children.map(transformHeader);\n\n if (nestedTable) {\n const nestedFull = { ...nestedTable, rows: [] } as unknown as SimpleTableAngularProps;\n transformed.nestedTable = buildVanillaConfig(\n nestedFull,\n registry,\n appRef,\n injector,\n elementInjector,\n ) as any;\n }\n\n return transformed;\n }\n\n const columns = resolveAngularColumns(config);\n\n registry.pruneRendererCaches(collectHeaderAccessors(columns));\n\n // `rest` still carries TData-bound callbacks (getRowId, onCellEdit, …).\n // Widen once here — the vanilla runtime is Row-shaped.\n const shared = rest as SimpleTableConfig;\n\n const vanillaConfig: SimpleTableConfig = {\n ...shared,\n rows: asRows(rows),\n columns: columns.map(transformHeader),\n enableColumnEditor,\n enableColumnEditorInitOpen,\n enablePagination,\n onTableReady,\n hoverRowBackground,\n oddColumnBackground,\n oddEvenRowBackground,\n // Authoritative mount teardown: core calls this before it permanently\n // discards any host element, so the registry destroys exactly the affected\n // Angular ComponentRefs (including CDK Overlay / floating UI).\n onRendererHostDiscard: registry.disposeHost,\n };\n\n if (onColumnOrderChange) {\n vanillaConfig.onColumnOrderChange = (headers) =>\n onColumnOrderChange(headers as unknown as AngularColumnDef<TData, any>[]);\n }\n if (onColumnWidthChange) {\n vanillaConfig.onColumnWidthChange = (headers) =>\n onColumnWidthChange(headers as unknown as AngularColumnDef<TData, any>[]);\n }\n if (onHeaderEdit) {\n vanillaConfig.onHeaderEdit = (header, newLabel) =>\n onHeaderEdit(header as unknown as AngularColumnDef<TData, any>, newLabel);\n }\n if (onColumnSelect) {\n vanillaConfig.onColumnSelect = (header) =>\n onColumnSelect(header as unknown as AngularColumnDef<TData, any>);\n }\n\n if (footerRenderer !== undefined) {\n if ((footerRenderer as any).ɵcmp) {\n vanillaConfig.footerRenderer = wrap(footerRenderer) as any;\n } else {\n vanillaConfig.footerRenderer = footerRenderer as any;\n }\n }\n\n if (emptyStateRenderer !== undefined) {\n if ((emptyStateRenderer as any).ɵcmp) {\n vanillaConfig.emptyStateRenderer = wrap(emptyStateRenderer) as any;\n } else {\n vanillaConfig.emptyStateRenderer = emptyStateRenderer as any;\n }\n }\n\n if (errorStateRenderer !== undefined) {\n if ((errorStateRenderer as any).ɵcmp) {\n vanillaConfig.errorStateRenderer = wrap(errorStateRenderer) as any;\n } else {\n vanillaConfig.errorStateRenderer = errorStateRenderer as any;\n }\n }\n\n if (loadingStateRenderer !== undefined) {\n if ((loadingStateRenderer as any).ɵcmp) {\n vanillaConfig.loadingStateRenderer = wrap(loadingStateRenderer) as any;\n } else {\n vanillaConfig.loadingStateRenderer = loadingStateRenderer as any;\n }\n }\n\n if (tableEmptyStateRenderer !== undefined) {\n vanillaConfig.tableEmptyStateRenderer = resolveTableEmptyState(\n tableEmptyStateRenderer,\n wrap,\n registry,\n );\n }\n\n if (headerDropdown !== undefined) {\n vanillaConfig.headerDropdown = wrap(headerDropdown) as any;\n }\n\n if (columnEditorConfig !== undefined) {\n vanillaConfig.columnEditorConfig = transformColumnEditorConfig(columnEditorConfig);\n }\n\n if (icons !== undefined) {\n vanillaConfig.icons = transformIcons(icons);\n }\n\n if (rowButtons !== undefined) {\n vanillaConfig.rowButtons = rowButtons.map((button) => wrap(button) as any);\n }\n\n return vanillaConfig;\n}\n","/**\n * Tracks imperative Angular mounts and caches wrapped cell/header renderers per\n * accessor so unstable column rebuilds keep stable wrapper identity.\n */\nconst MOUNT_ID_ATTR = \"data-st-mount-id\";\n\nexport type CachedRendererSlot<T = unknown> = {\n component: T;\n wrapped: unknown;\n};\n\nexport class MountRegistry {\n private entries = new Map<string, () => void>();\n private nextId = 0;\n\n readonly cellRendererCache = new Map<string, CachedRendererSlot>();\n readonly headerRendererCache = new Map<string, CachedRendererSlot>();\n /** One-shot `tableEmptyStateRenderer` component mount, reused across config rebuilds. */\n tableEmptyStateMount: { component: unknown; host: HTMLElement } | null = null;\n\n register(container: HTMLElement, dispose: () => void): void {\n const id = `st-mount-${this.nextId++}`;\n container.setAttribute(MOUNT_ID_ATTR, id);\n this.entries.set(id, dispose);\n }\n\n /** True when `container` is a live registered mount host (not yet disposed). */\n isRegistered(container: HTMLElement): boolean {\n const id = container.getAttribute(MOUNT_ID_ATTR);\n if (id === null) return false;\n return this.entries.has(id);\n }\n\n disposeHost = (host: HTMLElement): void => {\n if (typeof host.getAttribute !== \"function\") return;\n const ids: string[] = [];\n const selfId = host.getAttribute(MOUNT_ID_ATTR);\n if (selfId !== null) ids.push(selfId);\n const tagged = host.querySelectorAll(`[${MOUNT_ID_ATTR}]`);\n tagged.forEach((el) => {\n const id = el.getAttribute(MOUNT_ID_ATTR);\n if (id !== null) ids.push(id);\n });\n for (const id of ids) {\n const dispose = this.entries.get(id);\n if (!dispose) continue;\n this.entries.delete(id);\n dispose();\n }\n };\n\n clear(): void {\n this.cellRendererCache.clear();\n this.headerRendererCache.clear();\n this.tableEmptyStateMount = null;\n for (const dispose of this.entries.values()) {\n dispose();\n }\n this.entries.clear();\n }\n\n pruneRendererCaches(liveAccessors: ReadonlySet<string>): void {\n for (const key of this.cellRendererCache.keys()) {\n if (!liveAccessors.has(key)) this.cellRendererCache.delete(key);\n }\n for (const key of this.headerRendererCache.keys()) {\n if (!liveAccessors.has(key)) this.headerRendererCache.delete(key);\n }\n }\n\n get size(): number {\n return this.entries.size;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n EventEmitter,\n ElementRef,\n ApplicationRef,\n EnvironmentInjector,\n Injector,\n inject,\n} from \"@angular/core\";\nimport { SimpleTableVanilla } from \"simple-table-core\";\nimport type { SimpleTableConfig, TableAPI } from \"simple-table-core\";\nimport {\n headersStructurallyEqual,\n rowsShallowUnchanged,\n} from \"simple-table-core\";\nimport { buildVanillaConfig, resolveAngularColumns } from \"../buildVanillaConfig\";\nimport { MountRegistry } from \"../MountRegistry\";\nimport type {\n AngularDefaultRowData,\n SimpleTableAngularProps,\n TableInstance,\n} from \"../types\";\n\n/**\n * SimpleTable — Angular adapter for simple-table-core.\n *\n * Accepts the same props as SimpleTableProps (the vanilla user-facing API) but\n * with Angular component types for all renderer props.\n *\n * Prefer typed `rows` / `columns` (`AngularColumnDef<MyRow>`). For a typed\n * imperative handle, use `@ViewChild(SimpleTableComponent) table!: SimpleTableComponent<MyRow>`\n * or listen to `(tableReady)`.\n */\n@Component({\n selector: \"simple-table\",\n standalone: true,\n template: `<div #host></div>`,\n styles: [\":host { display: block; }\"],\n})\nexport class SimpleTableComponent<\n TData extends AngularDefaultRowData = AngularDefaultRowData,\n> implements OnInit, OnChanges, OnDestroy {\n @Input({ required: true }) rows!: SimpleTableAngularProps<TData>[\"rows\"];\n @Input() columns?: SimpleTableAngularProps<TData>[\"columns\"];\n\n // All optional SimpleTableAngularProps inputs\n @Input() footerRenderer?: SimpleTableAngularProps<TData>[\"footerRenderer\"];\n @Input() loadingStateRenderer?: SimpleTableAngularProps<TData>[\"loadingStateRenderer\"];\n @Input() errorStateRenderer?: SimpleTableAngularProps<TData>[\"errorStateRenderer\"];\n @Input() emptyStateRenderer?: SimpleTableAngularProps<TData>[\"emptyStateRenderer\"];\n @Input() tableEmptyStateRenderer?: SimpleTableAngularProps<TData>[\"tableEmptyStateRenderer\"];\n @Input() headerDropdown?: SimpleTableAngularProps<TData>[\"headerDropdown\"];\n @Input() columnEditorConfig?: SimpleTableAngularProps<TData>[\"columnEditorConfig\"];\n @Input() onCellClick?: SimpleTableAngularProps<TData>[\"onCellClick\"];\n @Input() onCellEdit?: SimpleTableAngularProps<TData>[\"onCellEdit\"];\n @Input() onSortChange?: SimpleTableAngularProps<TData>[\"onSortChange\"];\n @Input() onFilterChange?: SimpleTableAngularProps<TData>[\"onFilterChange\"];\n @Input() onRowSelectionChange?: SimpleTableAngularProps<TData>[\"onRowSelectionChange\"];\n @Input() onRowGroupExpand?: SimpleTableAngularProps<TData>[\"onRowGroupExpand\"];\n @Input() onColumnOrderChange?: SimpleTableAngularProps<TData>[\"onColumnOrderChange\"];\n @Input() onColumnVisibilityChange?: SimpleTableAngularProps<TData>[\"onColumnVisibilityChange\"];\n @Input() onColumnWidthChange?: SimpleTableAngularProps<TData>[\"onColumnWidthChange\"];\n @Input() onPageChange?: SimpleTableAngularProps<TData>[\"onPageChange\"];\n @Input() onNextPage?: SimpleTableAngularProps<TData>[\"onNextPage\"];\n @Input() onLoadMore?: SimpleTableAngularProps<TData>[\"onLoadMore\"];\n @Input() onTableReady?: SimpleTableAngularProps<TData>[\"onTableReady\"];\n @Input() rowGrouping?: SimpleTableAngularProps<TData>[\"rowGrouping\"];\n @Input() canExpandRowGroup?: SimpleTableAngularProps<TData>[\"canExpandRowGroup\"];\n @Input() enableStickyParents?: SimpleTableAngularProps<TData>[\"enableStickyParents\"];\n @Input() pivot?: SimpleTableAngularProps<TData>[\"pivot\"];\n @Input() onPivotChange?: SimpleTableAngularProps<TData>[\"onPivotChange\"];\n @Input() enableRowSelection?: SimpleTableAngularProps<TData>[\"enableRowSelection\"];\n @Input() rowSelectionMode?: SimpleTableAngularProps<TData>[\"rowSelectionMode\"];\n @Input() selectRowOnClick?: SimpleTableAngularProps<TData>[\"selectRowOnClick\"];\n @Input() showRowSelectionColumn?: SimpleTableAngularProps<TData>[\"showRowSelectionColumn\"];\n @Input() theme?: SimpleTableAngularProps<TData>[\"theme\"];\n @Input() quickFilter?: SimpleTableAngularProps<TData>[\"quickFilter\"];\n @Input() isLoading?: SimpleTableAngularProps<TData>[\"isLoading\"];\n @Input() getRowId?: SimpleTableAngularProps<TData>[\"getRowId\"];\n @Input() getRowClass?: SimpleTableAngularProps<TData>[\"getRowClass\"];\n @Input() enablePagination?: SimpleTableAngularProps<TData>[\"enablePagination\"];\n @Input() rowsPerPage?: SimpleTableAngularProps<TData>[\"rowsPerPage\"];\n @Input() serverSidePagination?: SimpleTableAngularProps<TData>[\"serverSidePagination\"];\n @Input() totalRowCount?: SimpleTableAngularProps<TData>[\"totalRowCount\"];\n @Input() height?: SimpleTableAngularProps<TData>[\"height\"];\n @Input() maxHeight?: SimpleTableAngularProps<TData>[\"maxHeight\"];\n @Input() scrollParent?: SimpleTableAngularProps<TData>[\"scrollParent\"];\n @Input() infiniteScrollThreshold?: SimpleTableAngularProps<TData>[\"infiniteScrollThreshold\"];\n @Input() columnResizing?: SimpleTableAngularProps<TData>[\"columnResizing\"];\n @Input() columnReordering?: SimpleTableAngularProps<TData>[\"columnReordering\"];\n @Input() enableColumnEditor?: SimpleTableAngularProps<TData>[\"enableColumnEditor\"];\n @Input() enableColumnEditorInitOpen?: SimpleTableAngularProps<TData>[\"enableColumnEditorInitOpen\"];\n @Input() enablePivotPanel?: SimpleTableAngularProps<TData>[\"enablePivotPanel\"];\n @Input() selectableCells?: SimpleTableAngularProps<TData>[\"selectableCells\"];\n @Input() selectableColumns?: SimpleTableAngularProps<TData>[\"selectableColumns\"];\n @Input() enableHeaderEditing?: SimpleTableAngularProps<TData>[\"enableHeaderEditing\"];\n @Input() onHeaderEdit?: SimpleTableAngularProps<TData>[\"onHeaderEdit\"];\n @Input() onColumnSelect?: SimpleTableAngularProps<TData>[\"onColumnSelect\"];\n @Input() customTheme?: SimpleTableAngularProps<TData>[\"customTheme\"];\n @Input() icons?: SimpleTableAngularProps<TData>[\"icons\"];\n @Input() externalFilterHandling?: SimpleTableAngularProps<TData>[\"externalFilterHandling\"];\n @Input() externalSortHandling?: SimpleTableAngularProps<TData>[\"externalSortHandling\"];\n @Input() columnBorders?: SimpleTableAngularProps<TData>[\"columnBorders\"];\n @Input() rowButtons?: SimpleTableAngularProps<TData>[\"rowButtons\"];\n @Input() hideFooter?: SimpleTableAngularProps<TData>[\"hideFooter\"];\n @Input() hideHeader?: SimpleTableAngularProps<TData>[\"hideHeader\"];\n @Input() footerRenderKey?: SimpleTableAngularProps<TData>[\"footerRenderKey\"];\n @Input() footerPosition?: SimpleTableAngularProps<TData>[\"footerPosition\"];\n @Input() className?: SimpleTableAngularProps<TData>[\"className\"];\n @Input() copyHeadersToClipboard?: SimpleTableAngularProps<TData>[\"copyHeadersToClipboard\"];\n @Input() includeHeadersInCSVExport?: SimpleTableAngularProps<TData>[\"includeHeadersInCSVExport\"];\n @Input() initialSortColumn?: SimpleTableAngularProps<TData>[\"initialSortColumn\"];\n @Input() initialSortDirection?: SimpleTableAngularProps<TData>[\"initialSortDirection\"];\n @Input() expandAll?: SimpleTableAngularProps<TData>[\"expandAll\"];\n @Input() autoExpandColumns?: SimpleTableAngularProps<TData>[\"autoExpandColumns\"];\n @Input() animations?: SimpleTableAngularProps<TData>[\"animations\"];\n @Input() cellUpdateFlash?: SimpleTableAngularProps<TData>[\"cellUpdateFlash\"];\n @Input() enableVirtualization?: SimpleTableAngularProps<TData>[\"enableVirtualization\"];\n @Input() hoverRowBackground?: SimpleTableAngularProps<TData>[\"hoverRowBackground\"];\n @Input() oddColumnBackground?: SimpleTableAngularProps<TData>[\"oddColumnBackground\"];\n @Input() oddEvenRowBackground?: SimpleTableAngularProps<TData>[\"oddEvenRowBackground\"];\n\n /** Emits the TableAPI once the table has mounted. */\n @Output() tableReady = new EventEmitter<TableAPI<TData>>();\n\n private instance: TableInstance | null = null;\n private registry = new MountRegistry();\n private syncedDefaultHeaders: ReadonlyArray<\n NonNullable<SimpleTableAngularProps<TData>[\"columns\"]>[number]\n > | undefined;\n private syncedRows: SimpleTableAngularProps<TData>[\"rows\"] | undefined;\n private wasLoading = false;\n private didInitialAutoSize = false;\n private hostEl = inject(ElementRef<HTMLElement>);\n private appRef = inject(ApplicationRef);\n private envInjector = inject(EnvironmentInjector);\n private elementInjector = inject(Injector);\n\n private maybeRefitAutoSizeColumns(leftLoading: boolean): void {\n if (!this.instance) return;\n if (leftLoading) {\n this.instance.refitAutoSizeColumns?.();\n return;\n }\n // Angular mounts are synchronous, so custom renderer DOM is already present\n // after the first paint that registered mounts (mirrors Vue/React).\n if (!this.didInitialAutoSize && this.registry.size > 0) {\n this.didInitialAutoSize = true;\n this.instance.refitAutoSizeColumns?.();\n }\n }\n\n ngOnInit(): void {\n const container = this.hostEl.nativeElement.querySelector(\"div\") as HTMLElement;\n if (!container) return;\n\n const props = this.getProps();\n this.instance = new SimpleTableVanilla(\n container,\n buildVanillaConfig(\n props,\n this.registry,\n this.appRef,\n this.envInjector,\n this.elementInjector,\n ),\n ) as unknown as TableInstance;\n this.instance.mount();\n this.syncedDefaultHeaders = resolveAngularColumns(props);\n this.syncedRows = props.rows;\n this.wasLoading = Boolean(props.isLoading);\n this.maybeRefitAutoSizeColumns(false);\n\n this.tableReady.emit(this.instance.getAPI() as unknown as TableAPI<TData>);\n }\n\n ngOnChanges(): void {\n if (!this.instance) return;\n\n const props = this.getProps();\n const fullConfig = buildVanillaConfig(\n props,\n this.registry,\n this.appRef,\n this.envInjector,\n this.elementInjector,\n );\n const patch: Partial<SimpleTableConfig> = { ...fullConfig };\n const resolvedColumns = resolveAngularColumns(props);\n\n const headersUnchanged = headersStructurallyEqual(\n this.syncedDefaultHeaders,\n resolvedColumns,\n );\n this.syncedDefaultHeaders = resolvedColumns;\n if (headersUnchanged) {\n delete patch.columns;\n }\n\n const rowsUnchanged = rowsShallowUnchanged(\n this.syncedRows as ReadonlyArray<object> | undefined,\n props.rows as ReadonlyArray<object>,\n props.getRowId as Parameters<typeof rowsShallowUnchanged>[2],\n );\n this.syncedRows = props.rows;\n if (rowsUnchanged) {\n delete patch.rows;\n }\n\n const isLoading = Boolean(props.isLoading);\n const leftLoading = this.wasLoading && !isLoading;\n this.wasLoading = isLoading;\n\n this.instance.update(patch);\n this.maybeRefitAutoSizeColumns(leftLoading);\n }\n\n ngOnDestroy(): void {\n this.instance?.destroy();\n this.instance = null;\n this.syncedDefaultHeaders = undefined;\n this.syncedRows = undefined;\n this.registry.clear();\n }\n\n /** Returns the full imperative TableAPI. Use via @ViewChild or (tableReady) output. */\n getAPI(): TableAPI<TData> | null {\n return (this.instance?.getAPI() as TableAPI<TData> | undefined) ?? null;\n }\n\n private getProps(): SimpleTableAngularProps<TData> {\n const props: SimpleTableAngularProps<TData> = {\n rows: this.rows,\n };\n\n if (this.columns !== undefined) props.columns = this.columns;\n if (this.footerRenderer !== undefined) props.footerRenderer = this.footerRenderer;\n if (this.loadingStateRenderer !== undefined)\n props.loadingStateRenderer = this.loadingStateRenderer;\n if (this.errorStateRenderer !== undefined) props.errorStateRenderer = this.errorStateRenderer;\n if (this.emptyStateRenderer !== undefined) props.emptyStateRenderer = this.emptyStateRenderer;\n if (this.tableEmptyStateRenderer !== undefined)\n props.tableEmptyStateRenderer = this.tableEmptyStateRenderer;\n if (this.headerDropdown !== undefined) props.headerDropdown = this.headerDropdown;\n if (this.columnEditorConfig !== undefined) props.columnEditorConfig = this.columnEditorConfig;\n if (this.onCellClick !== undefined) props.onCellClick = this.onCellClick;\n if (this.onCellEdit !== undefined) props.onCellEdit = this.onCellEdit;\n if (this.onSortChange !== undefined) props.onSortChange = this.onSortChange;\n if (this.onFilterChange !== undefined) props.onFilterChange = this.onFilterChange;\n if (this.onRowSelectionChange !== undefined)\n props.onRowSelectionChange = this.onRowSelectionChange;\n if (this.onRowGroupExpand !== undefined) props.onRowGroupExpand = this.onRowGroupExpand;\n if (this.onColumnOrderChange !== undefined)\n props.onColumnOrderChange = this.onColumnOrderChange;\n if (this.onColumnVisibilityChange !== undefined)\n props.onColumnVisibilityChange = this.onColumnVisibilityChange;\n if (this.onColumnWidthChange !== undefined)\n props.onColumnWidthChange = this.onColumnWidthChange;\n if (this.onPageChange !== undefined) props.onPageChange = this.onPageChange;\n if (this.onNextPage !== undefined) props.onNextPage = this.onNextPage;\n if (this.onLoadMore !== undefined) props.onLoadMore = this.onLoadMore;\n if (this.onTableReady !== undefined) props.onTableReady = this.onTableReady;\n if (this.rowGrouping !== undefined) props.rowGrouping = this.rowGrouping;\n if (this.canExpandRowGroup !== undefined) props.canExpandRowGroup = this.canExpandRowGroup;\n if (this.enableStickyParents !== undefined)\n props.enableStickyParents = this.enableStickyParents;\n if (this.pivot !== undefined) props.pivot = this.pivot;\n if (this.onPivotChange !== undefined) props.onPivotChange = this.onPivotChange;\n if (this.enableRowSelection !== undefined) props.enableRowSelection = this.enableRowSelection;\n if (this.rowSelectionMode !== undefined) props.rowSelectionMode = this.rowSelectionMode;\n if (this.selectRowOnClick !== undefined) props.selectRowOnClick = this.selectRowOnClick;\n if (this.showRowSelectionColumn !== undefined)\n props.showRowSelectionColumn = this.showRowSelectionColumn;\n if (this.theme !== undefined) props.theme = this.theme;\n if (this.quickFilter !== undefined) props.quickFilter = this.quickFilter;\n if (this.isLoading !== undefined) props.isLoading = this.isLoading;\n if (this.getRowId !== undefined) props.getRowId = this.getRowId;\n if (this.getRowClass !== undefined) props.getRowClass = this.getRowClass;\n if (this.enablePagination !== undefined) props.enablePagination = this.enablePagination;\n if (this.rowsPerPage !== undefined) props.rowsPerPage = this.rowsPerPage;\n if (this.serverSidePagination !== undefined)\n props.serverSidePagination = this.serverSidePagination;\n if (this.totalRowCount !== undefined) props.totalRowCount = this.totalRowCount;\n if (this.height !== undefined) props.height = this.height;\n if (this.maxHeight !== undefined) props.maxHeight = this.maxHeight;\n if (this.scrollParent !== undefined) props.scrollParent = this.scrollParent;\n if (this.infiniteScrollThreshold !== undefined)\n props.infiniteScrollThreshold = this.infiniteScrollThreshold;\n if (this.columnResizing !== undefined) props.columnResizing = this.columnResizing;\n if (this.columnReordering !== undefined) props.columnReordering = this.columnReordering;\n if (this.enableColumnEditor !== undefined) props.enableColumnEditor = this.enableColumnEditor;\n if (this.enableColumnEditorInitOpen !== undefined)\n props.enableColumnEditorInitOpen = this.enableColumnEditorInitOpen;\n if (this.enablePivotPanel !== undefined) props.enablePivotPanel = this.enablePivotPanel;\n if (this.selectableCells !== undefined) props.selectableCells = this.selectableCells;\n if (this.selectableColumns !== undefined) props.selectableColumns = this.selectableColumns;\n if (this.enableHeaderEditing !== undefined)\n props.enableHeaderEditing = this.enableHeaderEditing;\n if (this.onHeaderEdit !== undefined) props.onHeaderEdit = this.onHeaderEdit;\n if (this.onColumnSelect !== undefined) props.onColumnSelect = this.onColumnSelect;\n if (this.customTheme !== undefined) props.customTheme = this.customTheme;\n if (this.icons !== undefined) props.icons = this.icons;\n if (this.externalFilterHandling !== undefined)\n props.externalFilterHandling = this.externalFilterHandling;\n if (this.externalSortHandling !== undefined)\n props.externalSortHandling = this.externalSortHandling;\n if (this.columnBorders !== undefined) props.columnBorders = this.columnBorders;\n if (this.rowButtons !== undefined) props.rowButtons = this.rowButtons;\n if (this.hideFooter !== undefined) props.hideFooter = this.hideFooter;\n if (this.hideHeader !== undefined) props.hideHeader = this.hideHeader;\n if (this.footerRenderKey !== undefined) props.footerRenderKey = this.footerRenderKey;\n if (this.footerPosition !== undefined) props.footerPosition = this.footerPosition;\n if (this.className !== undefined) props.className = this.className;\n if (this.copyHeadersToClipboard !== undefined)\n props.copyHeadersToClipboard = this.copyHeadersToClipboard;\n if (this.includeHeadersInCSVExport !== undefined)\n props.includeHeadersInCSVExport = this.includeHeadersInCSVExport;\n if (this.initialSortColumn !== undefined) props.initialSortColumn = this.initialSortColumn;\n if (this.initialSortDirection !== undefined)\n props.initialSortDirection = this.initialSortDirection;\n if (this.expandAll !== undefined) props.expandAll = this.expandAll;\n if (this.autoExpandColumns !== undefined) props.autoExpandColumns = this.autoExpandColumns;\n if (this.animations !== undefined) props.animations = this.animations;\n if (this.cellUpdateFlash !== undefined) props.cellUpdateFlash = this.cellUpdateFlash;\n if (this.enableVirtualization !== undefined)\n props.enableVirtualization = this.enableVirtualization;\n if (this.hoverRowBackground !== undefined) props.hoverRowBackground = this.hoverRowBackground;\n if (this.hoverRowBackground !== undefined)\n props.hoverRowBackground = this.hoverRowBackground;\n if (this.oddColumnBackground !== undefined)\n props.oddColumnBackground = this.oddColumnBackground;\n if (this.oddColumnBackground !== undefined)\n props.oddColumnBackground = this.oddColumnBackground;\n if (this.oddEvenRowBackground !== undefined)\n props.oddEvenRowBackground = this.oddEvenRowBackground;\n if (this.oddEvenRowBackground !== undefined)\n props.oddEvenRowBackground = this.oddEvenRowBackground;\n\n return props;\n }\n}\n","import type { EnvironmentProviders } from \"@angular/core\";\nimport { makeEnvironmentProviders } from \"@angular/core\";\n\n/**\n * Call this in your application's `providers` array (or `bootstrapApplication`\n * providers) to register the dependencies that simple-table-angular's renderer\n * bridge needs — specifically `ApplicationRef` and `EnvironmentInjector`.\n *\n * These are already provided by Angular's platform by default, so in practice\n * this function is a no-op placeholder that serves as a clear signal to\n * consumers that the adapter has been correctly wired up. If future versions\n * need custom providers they will be added here without breaking the call site.\n *\n * @example\n * // main.ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideSimpleTable()],\n * });\n *\n * @example\n * // app.module.ts\n * @NgModule({ providers: [provideSimpleTable()] })\n * export class AppModule {}\n */\nexport function provideSimpleTable(): EnvironmentProviders {\n return makeEnvironmentProviders([\n // ApplicationRef and EnvironmentInjector are part of Angular's core platform\n // and are available without any additional registration.\n // This factory is intentionally empty — it exists for API symmetry with\n // other Angular ecosystem libraries and to allow non-breaking additions later.\n ]);\n}\n","// Component\nexport { SimpleTableComponent } from \"./lib/SimpleTableComponent\";\nexport { asRows } from \"simple-table-core\";\n\n// Provider helper\nexport { provideSimpleTable } from \"./lib/provideSimpleTable\";\n\n/** Wrap a standalone component as an HTMLElement (e.g. for one-shot slots). */\nexport { wrapAngularRenderer } from \"./utils/wrapAngularRenderer\";\n\n// Angular-specific props and type overrides\nexport type {\n SimpleTableAngularProps,\n TableInstance,\n AngularColumnDef,\n NestedAngularColumnDef,\n NestedTableAngularConfig,\n AngularIconsConfig,\n AngularIconSlot,\n AngularColumnEditorConfig,\n AngularCellRenderer,\n AngularHeaderRenderer,\n AngularFooterRenderer,\n AngularHeaderDropdown,\n AngularColumnEditorRowRenderer,\n AngularColumnEditorCustomRenderer,\n AngularLoadingStateRenderer,\n AngularErrorStateRenderer,\n AngularEmptyStateRenderer,\n AngularRowButton,\n AngularDefaultRowData,\n} from \"./types\";\n\n// Re-export vanilla types for callbacks and the imperative API via @ViewChild /\n// (tableReady). For column definitions on `SimpleTable`, use `AngularColumnDef`.\nexport type {\n Accessor,\n AggregationConfig,\n AggregationType,\n AnimationsConfig,\n AutoSizeMode,\n ColumnDef,\n Cell,\n CellChangeProps,\n CellClickProps,\n CellRenderer,\n CellRendererProps,\n CellValue,\n ChartOptions,\n ColumnEditorConfig,\n ColumnEditorRowRenderer,\n ColumnEditorRowRendererComponents,\n ColumnEditorCustomRenderer,\n ColumnEditorCustomRendererProps,\n ColumnEditorRowRendererProps,\n ColumnEditorSearchFunction,\n ColumnType,\n ColumnVisibilityState,\n Comparator,\n ComparatorProps,\n CustomTheme,\n CustomThemeProps,\n EmptyStateRenderer,\n EmptyStateRendererProps,\n EnumOption,\n ErrorStateRenderer,\n ErrorStateRendererProps,\n ExportToCSVProps,\n ExportValueGetter,\n ExportValueProps,\n FilterCondition,\n FilterOperator,\n StringFilterOperator,\n NumberFilterOperator,\n BooleanFilterOperator,\n DateFilterOperator,\n EnumFilterOperator,\n FooterRendererProps,\n FooterPosition,\n GetRowId,\n GetRowIdParams,\n GetRowClass,\n GetRowClassParams,\n HeaderDropdown,\n HeaderDropdownProps,\n HeaderRenderer,\n HeaderRendererComponents,\n HeaderRendererProps,\n IconsConfig,\n LoadingStateRenderer,\n LoadingStateRendererProps,\n OnRowGroupExpandProps,\n Pinned,\n PinnedSectionsState,\n PivotConfig,\n PivotValueConfig,\n PivotResult,\n QuickFilterConfig,\n QuickFilterGetter,\n QuickFilterGetterProps,\n QuickFilterMode,\n Row,\n RowButtonProps,\n RowId,\n RowSelectionChangeProps,\n RowSelectionMode,\n RowState,\n SetHeaderRenameProps,\n ShowWhen,\n SimpleTableConfig,\n SimpleTableProps,\n SortColumn,\n TableAPI,\n TableFilterState,\n TableRow,\n Theme,\n UpdateDataProps,\n ValueFormatter,\n ValueFormatterProps,\n ValueGetter,\n ValueGetterProps,\n} from \"simple-table-core\";\n\nexport {\n pivotRows,\n buildPivotAccessor,\n buildPivotRowTotalAccessor,\n PIVOT_IS_TOTAL_KEY,\n PIVOT_ACCESSOR_PREFIX,\n PIVOT_BLANK_LABEL,\n} from \"simple-table-core\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAwBA,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC;AAE5E;AACA,SAAS,kBAAkB,CAAC,SAAwB,EAAA;AAClD,IAAA,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAC9C,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU;AAC/B,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK;AACzB,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;AACjC,QAAA,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;AACzB,QAAA,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;IAC/B;AACA,IAAA,OAAO,KAAK;AACd;AAEA;AACA,SAAS,mBAAmB,CAC1B,YAA6B,EAC7B,KAAiB,EAAA;IAEjB,MAAM,GAAG,GAAG,YAEX;IACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,CAAC,aAA8B,CAAC;AAC9E,IAAA,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE;AACzD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAChD,YAAA,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACnB,gBAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC;YAC1B;iBAAO;;AAEJ,gBAAA,YAAY,CAAC,QAAoC,CAAC,GAAG,CAAC,GAAG,KAAK;YACjE;QACF;IACF;SAAO;QACL,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAkB,EAAE,KAAK,CAAC;IACvD;AACA,IAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAChD;AAEA,SAAS,qBAAqB,CAC5B,SAAkB,EAClB,KAAiB,EACjB,OAA4B,EAC5B,IAAkB,EAAA;IAElB,MAAM,EAAE,GAAG,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAChD,IAAA,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,EAAE;QAC9C,mBAAmB,EAAE,OAAO,CAAC,WAAW;QACxC,eAAe,EAAE,OAAO,CAAC,eAAe;AACxC,QAAA,WAAW,EAAE,EAAE;AAChB,KAAA,CAAC;AACF,IAAA,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;IAChD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAK;QAClC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;QAChD,YAAY,CAAC,OAAO,EAAE;AACxB,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE;AACnC;AAEA;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,mBAAmB,CACjC,SAAkB,EAClB,MAAsB,EACtB,QAA6B,EAC7B,QAAwB,EACxB,eAA0B,EAAA;AAE1B,IAAA,MAAM,OAAO,GAAwB;QACnC,MAAM;AACN,QAAA,WAAW,EAAE,QAAQ;QACrB,QAAQ;QACR,eAAe;KAChB;IACD,OAAO,CAAC,KAAiB,KAAiB;QACxC,OAAO,qBAAqB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI;AAC9D,IAAA,CAAC;AACH;AAEA;;;;;AAKG;AACG,SAAU,yBAAyB,CACvC,SAAuB,EACvB,OAA4B,EAAA;AAE5B,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;IACjC,IAAI,IAAI,GAAuB,IAAI;IACnC,IAAI,YAAY,GAAgC,IAAI;IACpD,OAAO,CAAC,KAAiC,KAAiB;QACxD,IAAI,IAAI,IAAI,YAAY,IAAI,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE;AACxD,YAAA,mBAAmB,CAAC,YAAY,EAAE,KAAe,CAAC;AAClD,YAAA,OAAO,IAAI;QACb;QACA,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,EAAE,KAAe,EAAE,OAAO,CAAC;AAC1E,QAAA,IAAI,GAAG,OAAO,CAAC,IAAI;AACnB,QAAA,YAAY,GAAG,OAAO,CAAC,YAAY;AACnC,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AACH;AAEA;;;;;;AAMG;AACG,SAAU,yBAAyB,CACvC,SAAkB,EAClB,OAA4B,EAC5B,QAAgB,EAChB,IAAuB,EAAA;AAEvB,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;IACjC,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC;IACvE;AACA,IAAA,MAAM,KAAK,GAAG,IAAI,KAAK,MAAM,GAAG,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAC,mBAAmB;IACzF,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;IACpC,IAAI,QAAQ,EAAE;QACZ,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE;AACvD,YAAA,QAAQ,CAAC,SAAS,GAAG,SAAS;YAC9B,MAAM,OAAO,GAAI,QAAQ,CAAC,OAAe,CAAC,sBAAsB,CAAC;AAChE,YAAA,QAAQ,CAAC,OAAe,CAAC,sBAAsB,CAAC;AAC/C,gBAAA,CAAC,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC;QACnD;aAAO;AACL,YAAA,QAAQ,CAAC,SAAS,GAAG,SAAS;QAChC;QACA,OAAO,QAAQ,CAAC,OAA6C;IAC/D;AAEA,IAAA,MAAM,IAAI,GAAwE;QAChF,SAAS;AACT,QAAA,OAAO,EAAE,IAAqD;KAC/D;AAED,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,IAAI,IAAI,GAAuB,IAAI;QACnC,IAAI,YAAY,GAA2B,IAAI;AAC/C,QAAA,MAAM,OAAO,GAAG,CAAC,KAAiB,KAAiB;YACjD,IAAI,IAAI,IAAI,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACvD,gBAAA,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC;AACxC,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC;AACrE,YAAA,IAAI,GAAG,OAAO,CAAC,IAAI;AACnB,YAAA,YAAY,GAAG,OAAO,CAAC,YAAY;AACnC,YAAA,OAAO,IAAI;AACb,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzB,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,MAAM,OAAO,GAAG,CAAC,KAAiB,KAAiB;AACjD,QAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI;AACnE,IAAA,CAAC;AACD,IAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACrB,IAAA,OAAe,CAAC,sBAAsB,CAAC,GAAG,CAAC;AAC5C,IAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzB,IAAA,OAAO,OAAO;AAChB;AAEA;;;AAGG;AACG,SAAU,kCAAkC,CAChD,SAAuB,EACvB,OAA4B,EAAA;AAE5B,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACjC,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAGnB;IACH,OAAO,CAAC,KAA0C,KAAiB;QACjE,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QAChC,IAAI,QAAQ,IAAI,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACrD,YAAA,mBAAmB,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAe,CAAC;YAC3D,OAAO,QAAQ,CAAC,IAAI;QACtB;QACA,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,EAAE,KAAe,EAAE,OAAO,CAAC;AAC1E,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;QACxB,OAAO,OAAO,CAAC,IAAI;AACrB,IAAA,CAAC;AACH;;ACtNA;AACM,SAAU,qBAAqB,CAGnC,MAAuD,EAAA;AAEvD,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO;IAC9B,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;IACnD;AACA,IAAA,OAAO,OAAO;AAChB;AAEA,SAAS,sBAAsB,CAC7B,KAA6E,EAC7E,IAA8E,EAC9E,QAAuB,EAAA;AAEvB,IAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,QAAA,IAAI,QAAQ,CAAC,oBAAoB,EAAE;YACjC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACxD,YAAA,QAAQ,CAAC,oBAAoB,GAAG,IAAI;QACtC;AACA,QAAA,OAAO,IAAI;IACb;AACA,IAAA,IAAK,KAA4B,CAAC,IAAI,EAAE;AACtC,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,oBAAoB;AAC9C,QAAA,IACE,QAAQ;YACR,QAAQ,CAAC,SAAS,KAAK,KAAK;YAC5B,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpC;YACA,OAAO,QAAQ,CAAC,IAAI;QACtB;QACA,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,YAAA,QAAQ,CAAC,oBAAoB,GAAG,IAAI;QACtC;QACA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAY,CAAC,CAAC,EAAE,CAAC;QACnC,QAAQ,CAAC,oBAAoB,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;AAC1D,QAAA,OAAO,IAAI;IACb;AACA,IAAA,IAAI,QAAQ,CAAC,oBAAoB,EAAE;QACjC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACxD,QAAA,QAAQ,CAAC,oBAAoB,GAAG,IAAI;IACtC;AACA,IAAA,OAAO,KAA6B;AACtC;AAEM,SAAU,kBAAkB,CAChC,MAAsC,EACtC,QAAuB,EACvB,MAAsB,EACtB,QAA6B,EAC7B,eAA0B,EAAA;IAE1B,MAAM,EACJ,OAAO,EAAE,QAAQ,EACjB,IAAI,EACJ,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,GAAG,IAAI,EACR,GAAG,MAAM;AAEV,IAAA,MAAM,YAAY,GAAwB;QACxC,MAAM;AACN,QAAA,WAAW,EAAE,QAAQ;QACrB,QAAQ;QACR,eAAe;KAChB;AACD,IAAA,MAAM,IAAI,GAAG,CAAmB,SAAc,KAC5C,mBAAmB,CAAI,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC;IAEhF,SAAS,cAAc,CAAC,WAA+B,EAAA;QACrD,MAAM,MAAM,GAA4C,EAAE;AAC1D,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YACtD,IAAI,KAAK,IAAI,IAAI;gBAAE;YACnB,IACE,OAAO,KAAK,KAAK,QAAQ;AACzB,gBAAA,KAAK,YAAY,WAAW;gBAC5B,KAAK,YAAY,aAAa,EAC9B;AACC,gBAAA,MAAc,CAAC,GAAG,CAAC,GAAG,KAAK;YAC9B;AAAO,iBAAA,IAAK,KAAa,CAAC,IAAI,EAAE;gBAC7B,MAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAY,CAAC,CAAC,EAAE,CAAC;YAC/C;iBAAO;AACJ,gBAAA,MAAc,CAAC,GAAG,CAAC,GAAG,KAAK;YAC9B;QACF;AACA,QAAA,OAAO,MAAM;IACf;IAEA,SAAS,2BAA2B,CAAC,GAA8B,EAAA;QACjE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG;QACvD,OAAO;AACL,YAAA,GAAG,OAAO;AACV,YAAA,IAAI;AACF,kBAAE;AACE,oBAAA,WAAW,EAAE,kCAAkC,CAC7C,WAAkB,EAClB,YAAY,CACN;AACT;kBACD,EAAE,CAAC;AACP,YAAA,IAAI,cAAc,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,CAAQ,EAAE,GAAG,EAAE,CAAC;SAC3E;IACH;IAEA,SAAS,eAAe,CAAC,MAAoC,EAAA;AAC3D,QAAA,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM;QACrF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AACxC,QAAA,MAAM,WAAW,GAAc,EAAE,GAAI,UAAkB,EAAE;QAEzD,IAAI,YAAY,EAAE;AAChB,YAAA,IAAK,YAAoB,CAAC,IAAI,EAAE;AAC9B,gBAAA,WAAW,CAAC,YAAY,GAAG,yBAAyB,CAClD,YAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,MAAM,CACA;YACV;iBAAO;AACL,gBAAA,WAAW,CAAC,YAAY,GAAG,YAAmB;YAChD;QACF;QACA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAK,cAAsB,CAAC,IAAI,EAAE;AAChC,gBAAA,WAAW,CAAC,cAAc,GAAG,yBAAyB,CACpD,cAAqB,EACrB,YAAY,EACZ,QAAQ,EACR,QAAQ,CACF;YACV;iBAAO;AACL,gBAAA,WAAW,CAAC,cAAc,GAAG,cAAqB;YACpD;QACF;AACA,QAAA,IAAI,QAAQ;YAAE,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;QAElE,IAAI,WAAW,EAAE;YACf,MAAM,UAAU,GAAG,EAAE,GAAG,WAAW,EAAE,IAAI,EAAE,EAAE,EAAwC;AACrF,YAAA,WAAW,CAAC,WAAW,GAAG,kBAAkB,CAC1C,UAAU,EACV,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,eAAe,CACT;QACV;AAEA,QAAA,OAAO,WAAW;IACpB;AAEA,IAAA,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAE7C,QAAQ,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;;;IAI7D,MAAM,MAAM,GAAG,IAAyB;AAExC,IAAA,MAAM,aAAa,GAAsB;AACvC,QAAA,GAAG,MAAM;AACT,QAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;AAClB,QAAA,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QACrC,kBAAkB;QAClB,0BAA0B;QAC1B,gBAAgB;QAChB,YAAY;QACZ,kBAAkB;QAClB,mBAAmB;QACnB,oBAAoB;;;;QAIpB,qBAAqB,EAAE,QAAQ,CAAC,WAAW;KAC5C;IAED,IAAI,mBAAmB,EAAE;AACvB,QAAA,aAAa,CAAC,mBAAmB,GAAG,CAAC,OAAO,KAC1C,mBAAmB,CAAC,OAAoD,CAAC;IAC7E;IACA,IAAI,mBAAmB,EAAE;AACvB,QAAA,aAAa,CAAC,mBAAmB,GAAG,CAAC,OAAO,KAC1C,mBAAmB,CAAC,OAAoD,CAAC;IAC7E;IACA,IAAI,YAAY,EAAE;AAChB,QAAA,aAAa,CAAC,YAAY,GAAG,CAAC,MAAM,EAAE,QAAQ,KAC5C,YAAY,CAAC,MAAiD,EAAE,QAAQ,CAAC;IAC7E;IACA,IAAI,cAAc,EAAE;AAClB,QAAA,aAAa,CAAC,cAAc,GAAG,CAAC,MAAM,KACpC,cAAc,CAAC,MAAiD,CAAC;IACrE;AAEA,IAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AAChC,QAAA,IAAK,cAAsB,CAAC,IAAI,EAAE;AAChC,YAAA,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAQ;QAC5D;aAAO;AACL,YAAA,aAAa,CAAC,cAAc,GAAG,cAAqB;QACtD;IACF;AAEA,IAAA,IAAI,kBAAkB,KAAK,SAAS,EAAE;AACpC,QAAA,IAAK,kBAA0B,CAAC,IAAI,EAAE;AACpC,YAAA,aAAa,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAQ;QACpE;aAAO;AACL,YAAA,aAAa,CAAC,kBAAkB,GAAG,kBAAyB;QAC9D;IACF;AAEA,IAAA,IAAI,kBAAkB,KAAK,SAAS,EAAE;AACpC,QAAA,IAAK,kBAA0B,CAAC,IAAI,EAAE;AACpC,YAAA,aAAa,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAQ;QACpE;aAAO;AACL,YAAA,aAAa,CAAC,kBAAkB,GAAG,kBAAyB;QAC9D;IACF;AAEA,IAAA,IAAI,oBAAoB,KAAK,SAAS,EAAE;AACtC,QAAA,IAAK,oBAA4B,CAAC,IAAI,EAAE;AACtC,YAAA,aAAa,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAQ;QACxE;aAAO;AACL,YAAA,aAAa,CAAC,oBAAoB,GAAG,oBAA2B;QAClE;IACF;AAEA,IAAA,IAAI,uBAAuB,KAAK,SAAS,EAAE;QACzC,aAAa,CAAC,uBAAuB,GAAG,sBAAsB,CAC5D,uBAAuB,EACvB,IAAI,EACJ,QAAQ,CACT;IACH;AAEA,IAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AAChC,QAAA,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAQ;IAC5D;AAEA,IAAA,IAAI,kBAAkB,KAAK,SAAS,EAAE;AACpC,QAAA,aAAa,CAAC,kBAAkB,GAAG,2BAA2B,CAAC,kBAAkB,CAAC;IACpF;AAEA,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,aAAa,CAAC,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;IAC7C;AAEA,IAAA,IAAI,UAAU,KAAK,SAAS,EAAE;AAC5B,QAAA,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAQ,CAAC;IAC5E;AAEA,IAAA,OAAO,aAAa;AACtB;;AChSA;;;AAGG;AACH,MAAM,aAAa,GAAG,kBAAkB;MAO3B,aAAa,CAAA;AAA1B,IAAA,WAAA,GAAA;AACU,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,GAAG,EAAsB;QACvC,IAAA,CAAA,MAAM,GAAG,CAAC;AAET,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAA8B;AACzD,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,GAAG,EAA8B;;QAEpE,IAAA,CAAA,oBAAoB,GAAqD,IAAI;AAe7E,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,IAAiB,KAAU;AACxC,YAAA,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU;gBAAE;YAC7C,MAAM,GAAG,GAAa,EAAE;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAC/C,IAAI,MAAM,KAAK,IAAI;AAAE,gBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA,CAAG,CAAC;AAC1D,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;gBACpB,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC;gBACzC,IAAI,EAAE,KAAK,IAAI;AAAE,oBAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/B,YAAA,CAAC,CAAC;AACF,YAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;gBACpB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACpC,gBAAA,IAAI,CAAC,OAAO;oBAAE;AACd,gBAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AACvB,gBAAA,OAAO,EAAE;YACX;AACF,QAAA,CAAC;IAwBH;IArDE,QAAQ,CAAC,SAAsB,EAAE,OAAmB,EAAA;QAClD,MAAM,EAAE,GAAG,CAAA,SAAA,EAAY,IAAI,CAAC,MAAM,EAAE,EAAE;AACtC,QAAA,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC;IAC/B;;AAGA,IAAA,YAAY,CAAC,SAAsB,EAAA;QACjC,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC;QAChD,IAAI,EAAE,KAAK,IAAI;AAAE,YAAA,OAAO,KAAK;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7B;IAoBA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;AAChC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;QAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;AAC3C,YAAA,OAAO,EAAE;QACX;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;IACtB;AAEA,IAAA,mBAAmB,CAAC,aAAkC,EAAA;QACpD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE;AAC/C,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC;QACjE;QACA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE;AACjD,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,gBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC;QACnE;IACF;AAEA,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;IAC1B;AACD;;AC7CD;;;;;;;;;AASG;MAOU,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;;AA0FY,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAmB;QAElD,IAAA,CAAA,QAAQ,GAAyB,IAAI;AACrC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,aAAa,EAAE;QAK9B,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,kBAAkB,GAAG,KAAK;AAC1B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,EAAC,UAAuB,EAAC;AACxC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACzC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;AA4M3C,IAAA;AA1MS,IAAA,yBAAyB,CAAC,WAAoB,EAAA;QACpD,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;QACpB,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI;YACtC;QACF;;;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,IAAI;QACxC;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAgB;AAC/E,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CACpC,SAAS,EACT,kBAAkB,CAChB,KAAK,EACL,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,eAAe,CACrB,CAC0B;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACrB,QAAA,IAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI;QAC5B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;AAErC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAgC,CAAC;IAC5E;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AAEpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC7B,MAAM,UAAU,GAAG,kBAAkB,CACnC,KAAK,EACL,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,eAAe,CACrB;AACD,QAAA,MAAM,KAAK,GAA+B,EAAE,GAAG,UAAU,EAAE;AAC3D,QAAA,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAEpD,MAAM,gBAAgB,GAAG,wBAAwB,CAC/C,IAAI,CAAC,oBAAoB,EACzB,eAAe,CAChB;AACD,QAAA,IAAI,CAAC,oBAAoB,GAAG,eAAe;QAC3C,IAAI,gBAAgB,EAAE;YACpB,OAAO,KAAK,CAAC,OAAO;QACtB;AAEA,QAAA,MAAM,aAAa,GAAG,oBAAoB,CACxC,IAAI,CAAC,UAA+C,EACpD,KAAK,CAAC,IAA6B,EACnC,KAAK,CAAC,QAAsD,CAC7D;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI;QAC5B,IAAI,aAAa,EAAE;YACjB,OAAO,KAAK,CAAC,IAAI;QACnB;QAEA,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS;AACjD,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAE3B,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC;IAC7C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;;IAGA,MAAM,GAAA;QACJ,OAAQ,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAkC,IAAI,IAAI;IACzE;IAEQ,QAAQ,GAAA;AACd,QAAA,MAAM,KAAK,GAAmC;YAC5C,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5D,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACjF,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS;AACzC,YAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACxD,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AAC7F,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AAC7F,QAAA,IAAI,IAAI,CAAC,uBAAuB,KAAK,SAAS;AAC5C,YAAA,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB;AAC9D,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACjF,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AAC7F,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACxE,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACrE,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AAC3E,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACjF,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS;AACzC,YAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACxD,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AACvF,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS;AACxC,YAAA,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACtD,QAAA,IAAI,IAAI,CAAC,wBAAwB,KAAK,SAAS;AAC7C,YAAA,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB;AAChE,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS;AACxC,YAAA,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACtD,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AAC3E,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACrE,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACrE,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AAC3E,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACxE,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAC1F,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS;AACxC,YAAA,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACtD,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACtD,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC9E,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AAC7F,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AACvF,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AACvF,QAAA,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS;AAC3C,YAAA,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB;AAC5D,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACtD,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACxE,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AAClE,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC/D,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACxE,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AACvF,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACxE,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS;AACzC,YAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACxD,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC9E,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACzD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AAClE,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AAC3E,QAAA,IAAI,IAAI,CAAC,uBAAuB,KAAK,SAAS;AAC5C,YAAA,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB;AAC9D,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACjF,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AACvF,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AAC7F,QAAA,IAAI,IAAI,CAAC,0BAA0B,KAAK,SAAS;AAC/C,YAAA,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B;AACpE,QAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AACvF,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;AACpF,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAC1F,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS;AACxC,YAAA,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACtD,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AAC3E,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACjF,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACxE,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACtD,QAAA,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS;AAC3C,YAAA,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB;AAC5D,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS;AACzC,YAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACxD,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa;AAC9E,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACrE,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACrE,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACrE,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;AACpF,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACjF,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AAClE,QAAA,IAAI,IAAI,CAAC,sBAAsB,KAAK,SAAS;AAC3C,YAAA,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB;AAC5D,QAAA,IAAI,IAAI,CAAC,yBAAyB,KAAK,SAAS;AAC9C,YAAA,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB;AAClE,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAC1F,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS;AACzC,YAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACxD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;AAClE,QAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAC1F,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;AACrE,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;AACpF,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS;AACzC,YAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACxD,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AAC7F,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS;AACvC,YAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AACpD,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS;AACxC,YAAA,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACtD,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS;AACxC,YAAA,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACtD,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS;AACzC,YAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACxD,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS;AACzC,YAAA,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AAExD,QAAA,OAAO,KAAK;IACd;+GA5SW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,0zFAHrB,CAAA,iBAAA,CAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,CAAA;;4FAGlB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,QAAA,EACN,CAAA,iBAAA,CAAmB,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBAM5B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBAGA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAGA;;;AC7HH;;;;;;;;;;;;;;;;;;;;AAoBG;SACa,kBAAkB,GAAA;AAChC,IAAA,OAAO,wBAAwB,CAAC;;;;;AAK/B,KAAA,CAAC;AACJ;;AC/BA;;ACAA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"simple-table-angular.mjs","sources":["../../src/utils/wrapAngularRenderer.ts","../../src/utils/wrapAngularTemplate.ts","../../src/buildVanillaConfig.ts","../../src/MountRegistry.ts","../../src/lib/stDirectives.ts","../../src/lib/SimpleTableComponent.ts","../../src/lib/simpleTableImports.ts","../../src/lib/provideSimpleTable.ts","../../src/index.ts","../../src/simple-table-angular.ts"],"sourcesContent":["import {\n ApplicationRef,\n createComponent,\n EnvironmentInjector,\n Injector,\n reflectComponentType,\n type ComponentRef,\n type Type,\n} from \"@angular/core\";\nimport type {\n ColumnEditorRowRendererProps as VanillaColumnEditorRowRendererProps,\n HeaderRendererProps as VanillaHeaderRendererProps,\n} from \"simple-table-core\";\nimport type { MountRegistry } from \"../MountRegistry\";\n\n/** Shared createComponent options for every Angular renderer mount. */\nexport type AngularMountOptions = {\n appRef: ApplicationRef;\n envInjector: EnvironmentInjector;\n registry?: MountRegistry;\n /** Parent ElementInjector so cells see providers on ancestors of `<simple-table>`. */\n elementInjector?: Injector;\n};\n\nconst ST_RENDERER_GENERATION = Symbol.for(\"simple-table.rendererGeneration\");\n\n/** Declared `@Input` / `input()` names for a component type (template + prop). */\nfunction declaredInputNames(component: Type<unknown>): Set<string> {\n const mirror = reflectComponentType(component);\n const names = new Set<string>();\n if (!mirror) return names;\n for (const input of mirror.inputs) {\n names.add(input.propName);\n names.add(input.templateName);\n }\n return names;\n}\n\n/** Apply props to a dynamic ComponentRef and flush change detection. */\nfunction applyComponentProps<P extends object>(\n componentRef: ComponentRef<P>,\n props: Partial<P>,\n): void {\n const ref = componentRef as ComponentRef<P> & {\n setInput?: (name: string, value: unknown) => void;\n };\n const inputs = declaredInputNames(componentRef.componentType as Type<unknown>);\n if (typeof ref.setInput === \"function\" && inputs.size > 0) {\n for (const [key, value] of Object.entries(props)) {\n if (inputs.has(key)) {\n ref.setInput(key, value);\n } else {\n // Core may pass undeclared keys; keep prior Object.assign behavior.\n (componentRef.instance as Record<string, unknown>)[key] = value;\n }\n }\n } else {\n Object.assign(componentRef.instance as object, props);\n }\n componentRef.changeDetectorRef.detectChanges();\n}\n\nfunction mountAngularComponent<P extends object>(\n component: Type<P>,\n props: Partial<P>,\n options: AngularMountOptions,\n host?: HTMLElement,\n): { host: HTMLElement; componentRef: ComponentRef<P> } {\n const el = host ?? document.createElement(\"div\");\n const componentRef = createComponent(component, {\n environmentInjector: options.envInjector,\n elementInjector: options.elementInjector,\n hostElement: el,\n });\n applyComponentProps(componentRef, props);\n options.appRef.attachView(componentRef.hostView);\n options.registry?.register(el, () => {\n options.appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n return { host: el, componentRef };\n}\n\n/**\n * Wraps an Angular standalone component into a function that returns an\n * HTMLElement, matching the vanilla renderer contract expected by\n * simple-table-core.\n *\n * Requires references to the running Angular ApplicationRef and\n * EnvironmentInjector so it can attach the dynamically-created component\n * to the change detection tree and trigger a synchronous flush before\n * returning the element to the vanilla rendering pipeline.\n *\n * Pass an optional {@link MountRegistry} so core's `onRendererHostDiscard` can\n * destroy the ComponentRef (including any CDK Overlay / floating UI) when the\n * host is discarded. The table adapter always supplies a registry; the public\n * helper used for one-shot static slots may omit it. Pass `elementInjector` so\n * dynamically created components see providers on ancestors of `<simple-table>`.\n * `ApplicationRef` and `EnvironmentInjector` come from Angular's injector;\n * `provideSimpleTable()` is optional.\n */\nexport function wrapAngularRenderer<P extends object>(\n component: Type<P>,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n registry?: MountRegistry,\n elementInjector?: Injector,\n): (props: Partial<P>) => HTMLElement {\n const options: AngularMountOptions = {\n appRef,\n envInjector: injector,\n registry,\n elementInjector,\n };\n return (props: Partial<P>): HTMLElement => {\n return mountAngularComponent(component, props, options).host;\n };\n}\n\n/**\n * Header renderer wrapper that reuses one host element so sort/filter icon\n * refreshes update props in place instead of remounting the Angular subtree\n * and wiping local state. Mirrors Vue's {@link wrapVueHeaderRenderer} /\n * React's wrapReactHeaderRenderer.\n */\nexport function wrapAngularHeaderRenderer(\n component: Type<object>,\n options: AngularMountOptions,\n): (props: VanillaHeaderRendererProps) => HTMLElement {\n const registry = options.registry;\n let host: HTMLElement | null = null;\n let componentRef: ComponentRef<object> | null = null;\n return (props: VanillaHeaderRendererProps): HTMLElement => {\n if (host && componentRef && registry?.isRegistered(host)) {\n applyComponentProps(componentRef, props as object);\n return host;\n }\n const mounted = mountAngularComponent(component, props as object, options);\n host = mounted.host;\n componentRef = mounted.componentRef;\n return host;\n };\n}\n\n/**\n * Like {@link wrapAngularRenderer}, but reuses one wrapper per accessor so\n * unstable column rebuilds keep a stable function identity on ColumnDef.\n *\n * For `kind: \"header\"`, also reuses a single mount host so sort/filter\n * refreshes preserve Angular component state.\n */\nexport function wrapCachedAngularRenderer<P extends object>(\n component: Type<P>,\n options: AngularMountOptions,\n accessor: string,\n kind: \"cell\" | \"header\",\n): (props: Partial<P>) => HTMLElement {\n const registry = options.registry;\n if (!registry) {\n throw new Error(\"wrapCachedAngularRenderer requires a MountRegistry\");\n }\n const cache = kind === \"cell\" ? registry.cellRendererCache : registry.headerRendererCache;\n const existing = cache.get(accessor);\n if (existing) {\n if (kind === \"cell\" && existing.component !== component) {\n existing.component = component;\n const current = (existing.wrapped as any)[ST_RENDERER_GENERATION];\n (existing.wrapped as any)[ST_RENDERER_GENERATION] =\n (typeof current === \"number\" ? current : 0) + 1;\n } else {\n existing.component = component;\n }\n return existing.wrapped as (props: Partial<P>) => HTMLElement;\n }\n\n const slot: { component: Type<P>; wrapped: (props: Partial<P>) => HTMLElement } = {\n component,\n wrapped: null as unknown as (props: Partial<P>) => HTMLElement,\n };\n\n if (kind === \"header\") {\n let host: HTMLElement | null = null;\n let componentRef: ComponentRef<P> | null = null;\n const wrapped = (props: Partial<P>): HTMLElement => {\n if (host && componentRef && registry.isRegistered(host)) {\n applyComponentProps(componentRef, props);\n return host;\n }\n const mounted = mountAngularComponent(slot.component, props, options);\n host = mounted.host;\n componentRef = mounted.componentRef;\n return host;\n };\n slot.wrapped = wrapped;\n cache.set(accessor, slot);\n return wrapped;\n }\n\n const wrapped = (props: Partial<P>): HTMLElement => {\n return mountAngularComponent(slot.component, props, options).host;\n };\n slot.wrapped = wrapped;\n (wrapped as any)[ST_RENDERER_GENERATION] = 0;\n cache.set(accessor, slot);\n return wrapped;\n}\n\n/**\n * Column-editor row renderer: one host per `accessor` so popout list rebuilds\n * update in place instead of remounting Angular state (mirrors Vue/React).\n */\nexport function wrapAngularColumnEditorRowRenderer(\n component: Type<object>,\n options: AngularMountOptions,\n): (props: VanillaColumnEditorRowRendererProps) => HTMLElement {\n const registry = options.registry;\n const mounts = new Map<\n string,\n { host: HTMLElement; componentRef: ComponentRef<object> }\n >();\n return (props: VanillaColumnEditorRowRendererProps): HTMLElement => {\n const key = String(props.accessor);\n const existing = mounts.get(key);\n if (existing && registry?.isRegistered(existing.host)) {\n applyComponentProps(existing.componentRef, props as object);\n return existing.host;\n }\n const mounted = mountAngularComponent(component, props as object, options);\n mounts.set(key, mounted);\n return mounted.host;\n };\n}\n","import {\n type EmbeddedViewRef,\n type TemplateRef,\n} from \"@angular/core\";\nimport type { AngularMountOptions } from \"./wrapAngularRenderer\";\n\nconst ST_RENDERER_GENERATION = Symbol.for(\"simple-table.rendererGeneration\");\n\nfunction applyTemplateContext(\n view: EmbeddedViewRef<Record<string, unknown>>,\n next: Record<string, unknown>,\n): void {\n const ctx = view.context;\n for (const key of Object.keys(ctx)) {\n if (!(key in next)) {\n delete ctx[key];\n }\n }\n Object.assign(ctx, next);\n view.detectChanges();\n}\n\nfunction mountEmbeddedView(\n template: TemplateRef<unknown>,\n context: Record<string, unknown>,\n options: AngularMountOptions,\n): { host: HTMLElement; view: EmbeddedViewRef<Record<string, unknown>> } {\n const host = document.createElement(\"div\");\n const view = (\n options.elementInjector\n ? template.createEmbeddedView(context, options.elementInjector)\n : template.createEmbeddedView(context)\n ) as EmbeddedViewRef<Record<string, unknown>>;\n view.detectChanges();\n options.appRef.attachView(view);\n for (const node of view.rootNodes) {\n host.appendChild(node);\n }\n options.registry?.register(host, () => {\n options.appRef.detachView(view);\n view.destroy();\n });\n return { host, view };\n}\n\n/**\n * Turns an `ng-template` into a core renderer: create the view, attach it so\n * clicks and bindings work, and tear it down when the table discards the host.\n */\nexport function wrapAngularTemplate<P extends object>(\n template: TemplateRef<unknown>,\n options: AngularMountOptions,\n mapContext: (props: P) => Record<string, unknown>,\n): (props: P) => HTMLElement {\n return (props: P): HTMLElement => {\n return mountEmbeddedView(template, mapContext(props), options).host;\n };\n}\n\n/**\n * Stable wrapper per column accessor so rebuilds do not swap renderer identity.\n * Header views update in place when the same template is still mounted.\n */\nexport function wrapCachedAngularTemplate<P extends object>(\n template: TemplateRef<unknown>,\n options: AngularMountOptions,\n accessor: string,\n kind: \"cell\" | \"header\",\n mapContext: (props: P) => Record<string, unknown>,\n): (props: P) => HTMLElement {\n const registry = options.registry;\n if (!registry) {\n throw new Error(\"wrapCachedAngularTemplate requires a MountRegistry\");\n }\n const cache =\n kind === \"cell\" ? registry.cellTemplateCache : registry.headerTemplateCache;\n const existing = cache.get(accessor);\n if (existing) {\n if (kind === \"cell\" && existing.component !== template) {\n existing.component = template;\n const current = (existing.wrapped as { [ST_RENDERER_GENERATION]?: number })[\n ST_RENDERER_GENERATION\n ];\n (existing.wrapped as { [ST_RENDERER_GENERATION]?: number })[ST_RENDERER_GENERATION] =\n (typeof current === \"number\" ? current : 0) + 1;\n } else {\n existing.component = template;\n }\n return existing.wrapped as (props: P) => HTMLElement;\n }\n\n const slot: { component: TemplateRef<unknown>; wrapped: (props: P) => HTMLElement } = {\n component: template,\n wrapped: null as unknown as (props: P) => HTMLElement,\n };\n\n if (kind === \"header\") {\n let host: HTMLElement | null = null;\n let view: EmbeddedViewRef<Record<string, unknown>> | null = null;\n let mountedTemplate: TemplateRef<unknown> | null = null;\n const wrapped = (props: P): HTMLElement => {\n const ctx = mapContext(props);\n if (\n host &&\n view &&\n registry.isRegistered(host) &&\n mountedTemplate === slot.component\n ) {\n applyTemplateContext(view, ctx);\n return host;\n }\n const mounted = mountEmbeddedView(slot.component, ctx, options);\n host = mounted.host;\n view = mounted.view;\n mountedTemplate = slot.component;\n return host;\n };\n slot.wrapped = wrapped;\n cache.set(accessor, slot);\n return wrapped;\n }\n\n const wrapped = (props: P): HTMLElement => {\n return mountEmbeddedView(slot.component, mapContext(props), options).host;\n };\n slot.wrapped = wrapped;\n (wrapped as { [ST_RENDERER_GENERATION]?: number })[ST_RENDERER_GENERATION] = 0;\n cache.set(accessor, slot);\n return wrapped;\n}\n\nexport function cellTemplateContext(props: object): Record<string, unknown> {\n const record = props as Record<string, unknown>;\n return {\n $implicit: record.row,\n ...record,\n };\n}\n\nexport function headerTemplateContext(props: object): Record<string, unknown> {\n const record = props as Record<string, unknown>;\n return {\n $implicit: record.header,\n ...record,\n };\n}\n\nexport function footerTemplateContext(props: object): Record<string, unknown> {\n const record = props as Record<string, unknown>;\n return {\n $implicit: record.currentPage,\n ...record,\n };\n}\n\nexport function loadingTemplateContext(props: object): Record<string, unknown> {\n const record = props as Record<string, unknown>;\n return {\n $implicit: record.parentRow,\n ...record,\n };\n}\n\nexport function errorTemplateContext(props: object): Record<string, unknown> {\n const record = props as Record<string, unknown>;\n return {\n $implicit: record.error,\n ...record,\n };\n}\n\nexport function emptyTemplateContext(_props: object): Record<string, unknown> {\n return {};\n}\n","import type { ApplicationRef, EnvironmentInjector, Injector, TemplateRef } from \"@angular/core\";\nimport type { SimpleTableConfig, ColumnDef, ColumnEditorConfig } from \"simple-table-core\";\nimport { asRows, collectHeaderAccessors } from \"simple-table-core\";\nimport type {\n SimpleTableAngularProps,\n AngularColumnDef,\n AngularColumnEditorConfig,\n AngularDefaultRowData,\n AngularIconsConfig,\n} from \"./types\";\nimport type { MountRegistry } from \"./MountRegistry\";\nimport {\n wrapAngularRenderer,\n wrapCachedAngularRenderer,\n wrapAngularColumnEditorRowRenderer,\n type AngularMountOptions,\n} from \"./utils/wrapAngularRenderer\";\nimport {\n wrapAngularTemplate,\n wrapCachedAngularTemplate,\n cellTemplateContext,\n headerTemplateContext,\n footerTemplateContext,\n loadingTemplateContext,\n errorTemplateContext,\n emptyTemplateContext,\n} from \"./utils/wrapAngularTemplate\";\n\n/** Projected `ng-template` slots from the page that hosts `<simple-table>`. */\nexport type AngularContentSlots = {\n cellTemplates?: ReadonlyMap<string, TemplateRef<unknown>>;\n headerTemplates?: ReadonlyMap<string, TemplateRef<unknown>>;\n emptyTemplate?: TemplateRef<unknown>;\n footerTemplate?: TemplateRef<unknown>;\n loadingTemplate?: TemplateRef<unknown>;\n errorTemplate?: TemplateRef<unknown>;\n};\n\n/** Resolve column definitions. */\nexport function resolveAngularColumns<\n TData extends AngularDefaultRowData = AngularDefaultRowData,\n>(\n config: Pick<SimpleTableAngularProps<TData>, \"columns\">,\n): ReadonlyArray<AngularColumnDef<TData, any>> {\n const headers = config.columns;\n if (!headers) {\n throw new Error(\"SimpleTable requires `columns`\");\n }\n return headers;\n}\n\nfunction resolveTableEmptyState(\n value: NonNullable<SimpleTableAngularProps[\"tableEmptyStateRenderer\"]> | null,\n wrap: <P extends object>(component: any) => (props: Partial<P>) => HTMLElement,\n registry: MountRegistry,\n): HTMLElement | string | null | (() => HTMLElement | string | null) {\n if (value === null) {\n if (registry.tableEmptyStateMount) {\n registry.disposeHost(registry.tableEmptyStateMount.host);\n registry.tableEmptyStateMount = null;\n }\n return null;\n }\n if ((value as { ɵcmp?: unknown }).ɵcmp) {\n return () => {\n const existing = registry.tableEmptyStateMount;\n if (\n existing &&\n existing.component === value &&\n registry.isRegistered(existing.host)\n ) {\n return existing.host;\n }\n if (existing) {\n registry.disposeHost(existing.host);\n registry.tableEmptyStateMount = null;\n }\n const host = wrap(value as any)({});\n registry.tableEmptyStateMount = { component: value, host };\n return host;\n };\n }\n if (registry.tableEmptyStateMount) {\n registry.disposeHost(registry.tableEmptyStateMount.host);\n registry.tableEmptyStateMount = null;\n }\n return value as HTMLElement | string;\n}\n\nexport function buildVanillaConfig<TData extends AngularDefaultRowData = AngularDefaultRowData>(\n config: SimpleTableAngularProps<TData>,\n registry: MountRegistry,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n elementInjector?: Injector,\n slots?: AngularContentSlots,\n): SimpleTableConfig {\n const {\n columns: _columns,\n rows,\n footerRenderer,\n emptyStateRenderer,\n errorStateRenderer,\n loadingStateRenderer,\n tableEmptyStateRenderer,\n headerDropdown,\n columnEditorConfig,\n icons,\n rowButtons,\n onColumnOrderChange,\n onColumnWidthChange,\n onHeaderEdit,\n onColumnSelect,\n enableColumnEditor,\n enableColumnEditorInitOpen,\n enablePagination,\n onTableReady,\n hoverRowBackground,\n oddColumnBackground,\n oddEvenRowBackground,\n ...rest\n } = config;\n\n const mountOptions: AngularMountOptions = {\n appRef,\n envInjector: injector,\n registry,\n elementInjector,\n };\n const wrap = <P extends object>(component: any) =>\n wrapAngularRenderer<P>(component, appRef, injector, registry, elementInjector);\n\n function transformIcons(iconsConfig: AngularIconsConfig): NonNullable<SimpleTableConfig[\"icons\"]> {\n const result: NonNullable<SimpleTableConfig[\"icons\"]> = {};\n for (const [key, value] of Object.entries(iconsConfig)) {\n if (value == null) continue;\n if (\n typeof value === \"string\" ||\n value instanceof HTMLElement ||\n value instanceof SVGSVGElement\n ) {\n (result as any)[key] = value;\n } else if ((value as any).ɵcmp) {\n (result as any)[key] = wrap(value as any)({});\n } else {\n (result as any)[key] = value;\n }\n }\n return result;\n }\n\n function transformColumnEditorConfig(cfg: AngularColumnEditorConfig): ColumnEditorConfig {\n const { rowRenderer, customRenderer, ...cfgRest } = cfg;\n return {\n ...cfgRest,\n ...(rowRenderer\n ? {\n rowRenderer: wrapAngularColumnEditorRowRenderer(\n rowRenderer as any,\n mountOptions,\n ) as any,\n }\n : {}),\n ...(customRenderer ? { customRenderer: wrap(customRenderer) as any } : {}),\n };\n }\n\n function transformHeader(header: AngularColumnDef<TData, any>): ColumnDef {\n const { cellRenderer, headerRenderer, children, nestedTable, ...headerRest } = header;\n const accessor = String(header.accessor);\n const transformed: ColumnDef = { ...(headerRest as any) };\n\n const cellTemplate = slots?.cellTemplates?.get(accessor);\n if (cellTemplate) {\n transformed.cellRenderer = wrapCachedAngularTemplate(\n cellTemplate,\n mountOptions,\n accessor,\n \"cell\",\n cellTemplateContext,\n ) as any;\n } else if (cellRenderer) {\n if ((cellRenderer as any).ɵcmp) {\n transformed.cellRenderer = wrapCachedAngularRenderer(\n cellRenderer as any,\n mountOptions,\n accessor,\n \"cell\",\n ) as any;\n } else {\n transformed.cellRenderer = cellRenderer as any;\n }\n }\n const headerTemplate = slots?.headerTemplates?.get(accessor);\n if (headerTemplate) {\n transformed.headerRenderer = wrapCachedAngularTemplate(\n headerTemplate,\n mountOptions,\n accessor,\n \"header\",\n headerTemplateContext,\n ) as any;\n } else if (headerRenderer) {\n if ((headerRenderer as any).ɵcmp) {\n transformed.headerRenderer = wrapCachedAngularRenderer(\n headerRenderer as any,\n mountOptions,\n accessor,\n \"header\",\n ) as any;\n } else {\n transformed.headerRenderer = headerRenderer as any;\n }\n }\n if (children) transformed.children = children.map(transformHeader);\n\n if (nestedTable) {\n const nestedFull = { ...nestedTable, rows: [] } as unknown as SimpleTableAngularProps;\n transformed.nestedTable = buildVanillaConfig(\n nestedFull,\n registry,\n appRef,\n injector,\n elementInjector,\n ) as any;\n }\n\n return transformed;\n }\n\n const columns = resolveAngularColumns(config);\n\n registry.pruneRendererCaches(collectHeaderAccessors(columns));\n\n // `rest` still carries TData-bound callbacks (getRowId, onCellEdit, …).\n // Widen once here — the vanilla runtime is Row-shaped.\n const shared = rest as SimpleTableConfig;\n\n const vanillaConfig: SimpleTableConfig = {\n ...shared,\n rows: asRows(rows),\n columns: columns.map(transformHeader),\n enableColumnEditor,\n enableColumnEditorInitOpen,\n enablePagination,\n onTableReady,\n hoverRowBackground,\n oddColumnBackground,\n oddEvenRowBackground,\n // Authoritative mount teardown: core calls this before it permanently\n // discards any host element, so the registry destroys exactly the affected\n // Angular ComponentRefs (including CDK Overlay / floating UI).\n onRendererHostDiscard: registry.disposeHost,\n };\n\n if (onColumnOrderChange) {\n vanillaConfig.onColumnOrderChange = (headers) =>\n onColumnOrderChange(headers as unknown as AngularColumnDef<TData, any>[]);\n }\n if (onColumnWidthChange) {\n vanillaConfig.onColumnWidthChange = (headers) =>\n onColumnWidthChange(headers as unknown as AngularColumnDef<TData, any>[]);\n }\n if (onHeaderEdit) {\n vanillaConfig.onHeaderEdit = (header, newLabel) =>\n onHeaderEdit(header as unknown as AngularColumnDef<TData, any>, newLabel);\n }\n if (onColumnSelect) {\n vanillaConfig.onColumnSelect = (header) =>\n onColumnSelect(header as unknown as AngularColumnDef<TData, any>);\n }\n\n if (slots?.footerTemplate) {\n vanillaConfig.footerRenderer = wrapAngularTemplate(\n slots.footerTemplate,\n mountOptions,\n footerTemplateContext,\n ) as any;\n } else if (footerRenderer !== undefined) {\n if ((footerRenderer as any).ɵcmp) {\n vanillaConfig.footerRenderer = wrap(footerRenderer) as any;\n } else {\n vanillaConfig.footerRenderer = footerRenderer as any;\n }\n }\n\n if (emptyStateRenderer !== undefined) {\n if ((emptyStateRenderer as any).ɵcmp) {\n vanillaConfig.emptyStateRenderer = wrap(emptyStateRenderer) as any;\n } else {\n vanillaConfig.emptyStateRenderer = emptyStateRenderer as any;\n }\n }\n\n if (slots?.errorTemplate) {\n vanillaConfig.errorStateRenderer = wrapAngularTemplate(\n slots.errorTemplate,\n mountOptions,\n errorTemplateContext,\n ) as any;\n } else if (errorStateRenderer !== undefined) {\n if ((errorStateRenderer as any).ɵcmp) {\n vanillaConfig.errorStateRenderer = wrap(errorStateRenderer) as any;\n } else {\n vanillaConfig.errorStateRenderer = errorStateRenderer as any;\n }\n }\n\n if (slots?.loadingTemplate) {\n vanillaConfig.loadingStateRenderer = wrapAngularTemplate(\n slots.loadingTemplate,\n mountOptions,\n loadingTemplateContext,\n ) as any;\n } else if (loadingStateRenderer !== undefined) {\n if ((loadingStateRenderer as any).ɵcmp) {\n vanillaConfig.loadingStateRenderer = wrap(loadingStateRenderer) as any;\n } else {\n vanillaConfig.loadingStateRenderer = loadingStateRenderer as any;\n }\n }\n\n if (slots?.emptyTemplate) {\n const renderEmpty = wrapAngularTemplate(\n slots.emptyTemplate,\n mountOptions,\n emptyTemplateContext,\n );\n vanillaConfig.tableEmptyStateRenderer = () => renderEmpty({});\n } else if (tableEmptyStateRenderer !== undefined) {\n vanillaConfig.tableEmptyStateRenderer = resolveTableEmptyState(\n tableEmptyStateRenderer,\n wrap,\n registry,\n );\n }\n\n if (headerDropdown !== undefined) {\n vanillaConfig.headerDropdown = wrap(headerDropdown) as any;\n }\n\n if (columnEditorConfig !== undefined) {\n vanillaConfig.columnEditorConfig = transformColumnEditorConfig(columnEditorConfig);\n }\n\n if (icons !== undefined) {\n vanillaConfig.icons = transformIcons(icons);\n }\n\n if (rowButtons !== undefined) {\n vanillaConfig.rowButtons = rowButtons.map((button) => wrap(button) as any);\n }\n\n return vanillaConfig;\n}\n","/**\n * Tracks imperative Angular mounts and caches wrapped cell/header renderers per\n * accessor so unstable column rebuilds keep stable wrapper identity.\n */\nconst MOUNT_ID_ATTR = \"data-st-mount-id\";\n\nexport type CachedRendererSlot<T = unknown> = {\n component: T;\n wrapped: unknown;\n};\n\nexport class MountRegistry {\n private entries = new Map<string, () => void>();\n private nextId = 0;\n\n readonly cellRendererCache = new Map<string, CachedRendererSlot>();\n readonly headerRendererCache = new Map<string, CachedRendererSlot>();\n readonly cellTemplateCache = new Map<string, CachedRendererSlot>();\n readonly headerTemplateCache = new Map<string, CachedRendererSlot>();\n /** One-shot `tableEmptyStateRenderer` component mount, reused across config rebuilds. */\n tableEmptyStateMount: { component: unknown; host: HTMLElement } | null = null;\n\n register(container: HTMLElement, dispose: () => void): void {\n const id = `st-mount-${this.nextId++}`;\n container.setAttribute(MOUNT_ID_ATTR, id);\n this.entries.set(id, dispose);\n }\n\n /** True when `container` is a live registered mount host (not yet disposed). */\n isRegistered(container: HTMLElement): boolean {\n const id = container.getAttribute(MOUNT_ID_ATTR);\n if (id === null) return false;\n return this.entries.has(id);\n }\n\n disposeHost = (host: HTMLElement): void => {\n if (typeof host.getAttribute !== \"function\") return;\n const ids: string[] = [];\n const selfId = host.getAttribute(MOUNT_ID_ATTR);\n if (selfId !== null) ids.push(selfId);\n const tagged = host.querySelectorAll(`[${MOUNT_ID_ATTR}]`);\n tagged.forEach((el) => {\n const id = el.getAttribute(MOUNT_ID_ATTR);\n if (id !== null) ids.push(id);\n });\n for (const id of ids) {\n const dispose = this.entries.get(id);\n if (!dispose) continue;\n this.entries.delete(id);\n dispose();\n }\n };\n\n clear(): void {\n this.cellRendererCache.clear();\n this.headerRendererCache.clear();\n this.cellTemplateCache.clear();\n this.headerTemplateCache.clear();\n this.tableEmptyStateMount = null;\n for (const dispose of this.entries.values()) {\n dispose();\n }\n this.entries.clear();\n }\n\n pruneRendererCaches(liveAccessors: ReadonlySet<string>): void {\n for (const cache of [\n this.cellRendererCache,\n this.headerRendererCache,\n this.cellTemplateCache,\n this.headerTemplateCache,\n ]) {\n for (const key of cache.keys()) {\n if (!liveAccessors.has(key)) cache.delete(key);\n }\n }\n }\n\n get size(): number {\n return this.entries.size;\n }\n}\n","import { Directive, ElementRef, Input, OnChanges, OnDestroy, TemplateRef, inject } from \"@angular/core\";\n\n/**\n * Page-template cell for a column, matched by `accessor`.\n * Context: `$implicit` is `row`; also `value`, `formattedValue`, and the rest of\n * the core cell renderer props.\n */\n@Directive({\n selector: \"ng-template[stCell]\",\n standalone: true,\n})\nexport class StCellDirective {\n @Input({ required: true }) stCell!: string;\n readonly templateRef = inject(TemplateRef);\n}\n\n/**\n * Page-template header for a column, matched by `accessor`.\n * Context: `$implicit` is `header`; also `components` (sort/filter icons).\n */\n@Directive({\n selector: \"ng-template[stHeader]\",\n standalone: true,\n})\nexport class StHeaderDirective {\n @Input({ required: true }) stHeader!: string;\n readonly templateRef = inject(TemplateRef);\n}\n\n/** Whole-table empty UI. Shown when there are no rows. */\n@Directive({\n selector: \"ng-template[stEmpty]\",\n standalone: true,\n})\nexport class StEmptyDirective {\n readonly templateRef = inject(TemplateRef);\n}\n\n/** Pagination / custom footer. Context matches core footer renderer props. */\n@Directive({\n selector: \"ng-template[stFooter]\",\n standalone: true,\n})\nexport class StFooterDirective {\n readonly templateRef = inject(TemplateRef);\n}\n\n/** Nested-group loading row (not the table-level skeleton `isLoading` flag). */\n@Directive({\n selector: \"ng-template[stLoading]\",\n standalone: true,\n})\nexport class StLoadingDirective {\n readonly templateRef = inject(TemplateRef);\n}\n\n/** Nested-group error row. */\n@Directive({\n selector: \"ng-template[stError]\",\n standalone: true,\n})\nexport class StErrorDirective {\n readonly templateRef = inject(TemplateRef);\n}\n\n/**\n * Opt-in: put a core-built DOM node (sort icon, filter icon, …) into the host.\n * Clones the node so the table can still own the original.\n */\n@Directive({\n selector: \"[stDomSlot]\",\n standalone: true,\n})\nexport class StDomSlotDirective implements OnChanges, OnDestroy {\n @Input() stDomSlot: string | Node | null | undefined;\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n ngOnChanges(): void {\n this.sync();\n }\n\n ngOnDestroy(): void {\n this.host.nativeElement.replaceChildren();\n }\n\n private sync(): void {\n const el = this.host.nativeElement;\n el.replaceChildren();\n const slot = this.stDomSlot;\n if (slot == null) return;\n if (typeof slot === \"string\") {\n el.textContent = slot;\n return;\n }\n if (slot instanceof Node) {\n el.appendChild(slot.cloneNode(true));\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n ElementRef,\n ApplicationRef,\n EnvironmentInjector,\n Injector,\n NgZone,\n inject,\n} from \"@angular/core\";\nimport { SimpleTableVanilla } from \"simple-table-core\";\nimport type {\n SimpleTableConfig,\n TableAPI,\n SortColumn,\n CellClickProps,\n CellChangeProps,\n TableFilterState,\n RowSelectionChangeProps,\n OnRowGroupExpandProps,\n ColumnVisibilityState,\n PivotConfig,\n} from \"simple-table-core\";\nimport {\n headersStructurallyEqual,\n rowsShallowUnchanged,\n} from \"simple-table-core\";\nimport {\n buildVanillaConfig,\n resolveAngularColumns,\n type AngularContentSlots,\n} from \"../buildVanillaConfig\";\nimport { MountRegistry } from \"../MountRegistry\";\nimport type {\n AngularColumnDef,\n AngularDefaultRowData,\n SimpleTableAngularProps,\n TableInstance,\n} from \"../types\";\nimport {\n StCellDirective,\n StEmptyDirective,\n StErrorDirective,\n StFooterDirective,\n StHeaderDirective,\n StLoadingDirective,\n} from \"./stDirectives\";\n\n/**\n * SimpleTable — Angular adapter for simple-table-core.\n *\n * Accepts the same props as SimpleTableProps (the vanilla user-facing API) but\n * with Angular component types for all renderer props.\n *\n * Prefer typed `rows` / `columns` (`AngularColumnDef<MyRow>`). For a typed\n * imperative handle, use `@ViewChild(SimpleTableComponent) table!: SimpleTableComponent<MyRow>`\n * or listen to `(tableReady)`.\n *\n * Page templates (`stCell`, `stEmpty`, …) and `(sortChange)`-style outputs are\n * the native Angular API. Import `SimpleTableImports` on the page. `class` on\n * this host styles the wrapper; `[className]` styles the inner grid root.\n */\n@Component({\n selector: \"simple-table\",\n standalone: true,\n template: `<div #host></div><ng-content />`,\n styles: [\":host { display: block; }\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SimpleTableComponent<\n TData extends AngularDefaultRowData = AngularDefaultRowData,\n> implements AfterContentInit, OnChanges, OnDestroy {\n @Input({ required: true }) rows!: SimpleTableAngularProps<TData>[\"rows\"];\n @Input() columns?: SimpleTableAngularProps<TData>[\"columns\"];\n\n // All optional SimpleTableAngularProps inputs\n @Input() footerRenderer?: SimpleTableAngularProps<TData>[\"footerRenderer\"];\n @Input() loadingStateRenderer?: SimpleTableAngularProps<TData>[\"loadingStateRenderer\"];\n @Input() errorStateRenderer?: SimpleTableAngularProps<TData>[\"errorStateRenderer\"];\n @Input() emptyStateRenderer?: SimpleTableAngularProps<TData>[\"emptyStateRenderer\"];\n @Input() tableEmptyStateRenderer?: SimpleTableAngularProps<TData>[\"tableEmptyStateRenderer\"];\n @Input() headerDropdown?: SimpleTableAngularProps<TData>[\"headerDropdown\"];\n @Input() columnEditorConfig?: SimpleTableAngularProps<TData>[\"columnEditorConfig\"];\n @Input() onCellClick?: SimpleTableAngularProps<TData>[\"onCellClick\"];\n @Input() onCellEdit?: SimpleTableAngularProps<TData>[\"onCellEdit\"];\n @Input() onSortChange?: SimpleTableAngularProps<TData>[\"onSortChange\"];\n @Input() onFilterChange?: SimpleTableAngularProps<TData>[\"onFilterChange\"];\n @Input() onRowSelectionChange?: SimpleTableAngularProps<TData>[\"onRowSelectionChange\"];\n @Input() onRowGroupExpand?: SimpleTableAngularProps<TData>[\"onRowGroupExpand\"];\n @Input() onColumnOrderChange?: SimpleTableAngularProps<TData>[\"onColumnOrderChange\"];\n @Input() onColumnVisibilityChange?: SimpleTableAngularProps<TData>[\"onColumnVisibilityChange\"];\n @Input() onColumnWidthChange?: SimpleTableAngularProps<TData>[\"onColumnWidthChange\"];\n @Input() onPageChange?: SimpleTableAngularProps<TData>[\"onPageChange\"];\n @Input() onNextPage?: SimpleTableAngularProps<TData>[\"onNextPage\"];\n @Input() onLoadMore?: SimpleTableAngularProps<TData>[\"onLoadMore\"];\n @Input() onTableReady?: SimpleTableAngularProps<TData>[\"onTableReady\"];\n @Input() rowGrouping?: SimpleTableAngularProps<TData>[\"rowGrouping\"];\n @Input() canExpandRowGroup?: SimpleTableAngularProps<TData>[\"canExpandRowGroup\"];\n @Input() enableStickyParents?: SimpleTableAngularProps<TData>[\"enableStickyParents\"];\n @Input() pivot?: SimpleTableAngularProps<TData>[\"pivot\"];\n @Input() onPivotChange?: SimpleTableAngularProps<TData>[\"onPivotChange\"];\n @Input() enableRowSelection?: SimpleTableAngularProps<TData>[\"enableRowSelection\"];\n @Input() rowSelectionMode?: SimpleTableAngularProps<TData>[\"rowSelectionMode\"];\n @Input() selectRowOnClick?: SimpleTableAngularProps<TData>[\"selectRowOnClick\"];\n @Input() showRowSelectionColumn?: SimpleTableAngularProps<TData>[\"showRowSelectionColumn\"];\n @Input() theme?: SimpleTableAngularProps<TData>[\"theme\"];\n @Input() quickFilter?: SimpleTableAngularProps<TData>[\"quickFilter\"];\n @Input() isLoading?: SimpleTableAngularProps<TData>[\"isLoading\"];\n @Input() getRowId?: SimpleTableAngularProps<TData>[\"getRowId\"];\n @Input() getRowClass?: SimpleTableAngularProps<TData>[\"getRowClass\"];\n @Input() enablePagination?: SimpleTableAngularProps<TData>[\"enablePagination\"];\n @Input() rowsPerPage?: SimpleTableAngularProps<TData>[\"rowsPerPage\"];\n @Input() serverSidePagination?: SimpleTableAngularProps<TData>[\"serverSidePagination\"];\n @Input() totalRowCount?: SimpleTableAngularProps<TData>[\"totalRowCount\"];\n @Input() height?: SimpleTableAngularProps<TData>[\"height\"];\n @Input() maxHeight?: SimpleTableAngularProps<TData>[\"maxHeight\"];\n @Input() scrollParent?: SimpleTableAngularProps<TData>[\"scrollParent\"];\n @Input() infiniteScrollThreshold?: SimpleTableAngularProps<TData>[\"infiniteScrollThreshold\"];\n @Input() columnResizing?: SimpleTableAngularProps<TData>[\"columnResizing\"];\n @Input() columnReordering?: SimpleTableAngularProps<TData>[\"columnReordering\"];\n @Input() enableColumnEditor?: SimpleTableAngularProps<TData>[\"enableColumnEditor\"];\n @Input() enableColumnEditorInitOpen?: SimpleTableAngularProps<TData>[\"enableColumnEditorInitOpen\"];\n @Input() enablePivotPanel?: SimpleTableAngularProps<TData>[\"enablePivotPanel\"];\n @Input() selectableCells?: SimpleTableAngularProps<TData>[\"selectableCells\"];\n @Input() selectableColumns?: SimpleTableAngularProps<TData>[\"selectableColumns\"];\n @Input() enableHeaderEditing?: SimpleTableAngularProps<TData>[\"enableHeaderEditing\"];\n @Input() onHeaderEdit?: SimpleTableAngularProps<TData>[\"onHeaderEdit\"];\n @Input() onColumnSelect?: SimpleTableAngularProps<TData>[\"onColumnSelect\"];\n @Input() customTheme?: SimpleTableAngularProps<TData>[\"customTheme\"];\n @Input() icons?: SimpleTableAngularProps<TData>[\"icons\"];\n @Input() externalFilterHandling?: SimpleTableAngularProps<TData>[\"externalFilterHandling\"];\n @Input() externalSortHandling?: SimpleTableAngularProps<TData>[\"externalSortHandling\"];\n @Input() columnBorders?: SimpleTableAngularProps<TData>[\"columnBorders\"];\n @Input() rowButtons?: SimpleTableAngularProps<TData>[\"rowButtons\"];\n @Input() hideFooter?: SimpleTableAngularProps<TData>[\"hideFooter\"];\n @Input() hideHeader?: SimpleTableAngularProps<TData>[\"hideHeader\"];\n @Input() footerRenderKey?: SimpleTableAngularProps<TData>[\"footerRenderKey\"];\n @Input() footerPosition?: SimpleTableAngularProps<TData>[\"footerPosition\"];\n @Input() className?: SimpleTableAngularProps<TData>[\"className\"];\n @Input() copyHeadersToClipboard?: SimpleTableAngularProps<TData>[\"copyHeadersToClipboard\"];\n @Input() includeHeadersInCSVExport?: SimpleTableAngularProps<TData>[\"includeHeadersInCSVExport\"];\n @Input() initialSortColumn?: SimpleTableAngularProps<TData>[\"initialSortColumn\"];\n @Input() initialSortDirection?: SimpleTableAngularProps<TData>[\"initialSortDirection\"];\n @Input() expandAll?: SimpleTableAngularProps<TData>[\"expandAll\"];\n @Input() autoExpandColumns?: SimpleTableAngularProps<TData>[\"autoExpandColumns\"];\n @Input() animations?: SimpleTableAngularProps<TData>[\"animations\"];\n @Input() cellUpdateFlash?: SimpleTableAngularProps<TData>[\"cellUpdateFlash\"];\n @Input() enableVirtualization?: SimpleTableAngularProps<TData>[\"enableVirtualization\"];\n @Input() hoverRowBackground?: SimpleTableAngularProps<TData>[\"hoverRowBackground\"];\n @Input() oddColumnBackground?: SimpleTableAngularProps<TData>[\"oddColumnBackground\"];\n @Input() oddEvenRowBackground?: SimpleTableAngularProps<TData>[\"oddEvenRowBackground\"];\n\n /** Emits the TableAPI once the table has mounted. */\n @Output() tableReady = new EventEmitter<TableAPI<TData>>();\n @Output() cellClick = new EventEmitter<CellClickProps<TData>>();\n @Output() cellEdit = new EventEmitter<CellChangeProps<TData>>();\n @Output() sortChange = new EventEmitter<SortColumn | null>();\n @Output() filterChange = new EventEmitter<TableFilterState<TData>>();\n @Output() rowSelectionChange = new EventEmitter<RowSelectionChangeProps<TData>>();\n @Output() rowGroupExpand = new EventEmitter<OnRowGroupExpandProps<TData>>();\n @Output() columnOrderChange = new EventEmitter<AngularColumnDef<TData, any>[]>();\n @Output() columnVisibilityChange = new EventEmitter<ColumnVisibilityState>();\n @Output() columnWidthChange = new EventEmitter<AngularColumnDef<TData, any>[]>();\n @Output() pageChange = new EventEmitter<number>();\n @Output() loadMore = new EventEmitter<void>();\n @Output() headerEdit = new EventEmitter<{\n header: AngularColumnDef<TData, any>;\n newLabel: string;\n }>();\n @Output() columnSelect = new EventEmitter<AngularColumnDef<TData, any>>();\n @Output() pivotChange = new EventEmitter<PivotConfig<TData> | null>();\n\n @ContentChildren(StCellDirective) private cellSlots!: QueryList<StCellDirective>;\n @ContentChildren(StHeaderDirective) private headerSlots!: QueryList<StHeaderDirective>;\n @ContentChildren(StEmptyDirective) private emptySlots!: QueryList<StEmptyDirective>;\n @ContentChildren(StFooterDirective) private footerSlots!: QueryList<StFooterDirective>;\n @ContentChildren(StLoadingDirective) private loadingSlots!: QueryList<StLoadingDirective>;\n @ContentChildren(StErrorDirective) private errorSlots!: QueryList<StErrorDirective>;\n\n private instance: TableInstance | null = null;\n private registry = new MountRegistry();\n private syncedDefaultHeaders: ReadonlyArray<\n NonNullable<SimpleTableAngularProps<TData>[\"columns\"]>[number]\n > | undefined;\n private syncedRows: SimpleTableAngularProps<TData>[\"rows\"] | undefined;\n private syncedSlotsKey = \"\";\n private wasLoading = false;\n private didInitialAutoSize = false;\n private slotUnsub: Array<{ unsubscribe(): void }> = [];\n private hostEl = inject(ElementRef<HTMLElement>);\n private appRef = inject(ApplicationRef);\n private envInjector = inject(EnvironmentInjector);\n private elementInjector = inject(Injector);\n private ngZone = inject(NgZone);\n\n // Run table event callbacks in Angular's zone so the page template updates.\n private inZone<T>(work: () => T): T {\n return this.ngZone.run(work);\n }\n\n private maybeRefitAutoSizeColumns(leftLoading: boolean): void {\n if (!this.instance) return;\n if (leftLoading) {\n this.instance.refitAutoSizeColumns?.();\n return;\n }\n // Angular mounts are synchronous, so custom renderer DOM is already present\n // after the first paint that registered mounts (mirrors Vue/React).\n if (!this.didInitialAutoSize && this.registry.size > 0) {\n this.didInitialAutoSize = true;\n this.instance.refitAutoSizeColumns?.();\n }\n }\n\n private collectSlots(): AngularContentSlots {\n const cellTemplates = new Map<string, StCellDirective[\"templateRef\"]>();\n for (const slot of this.cellSlots ?? []) {\n cellTemplates.set(slot.stCell, slot.templateRef);\n }\n const headerTemplates = new Map<string, StHeaderDirective[\"templateRef\"]>();\n for (const slot of this.headerSlots ?? []) {\n headerTemplates.set(slot.stHeader, slot.templateRef);\n }\n return {\n cellTemplates,\n headerTemplates,\n emptyTemplate: this.emptySlots?.last?.templateRef,\n footerTemplate: this.footerSlots?.last?.templateRef,\n loadingTemplate: this.loadingSlots?.last?.templateRef,\n errorTemplate: this.errorSlots?.last?.templateRef,\n };\n }\n\n private slotsFingerprint(slots: AngularContentSlots): string {\n const cells = [...(slots.cellTemplates?.keys() ?? [])].sort().join(\",\");\n const headers = [...(slots.headerTemplates?.keys() ?? [])].sort().join(\",\");\n return [\n `c:${cells}`,\n `h:${headers}`,\n `e:${slots.emptyTemplate ? 1 : 0}`,\n `f:${slots.footerTemplate ? 1 : 0}`,\n `l:${slots.loadingTemplate ? 1 : 0}`,\n `r:${slots.errorTemplate ? 1 : 0}`,\n ].join(\"|\");\n }\n\n private buildConfig() {\n const props = this.getProps();\n const slots = this.collectSlots();\n return {\n props,\n slots,\n slotsKey: this.slotsFingerprint(slots),\n fullConfig: buildVanillaConfig(\n props,\n this.registry,\n this.appRef,\n this.envInjector,\n this.elementInjector,\n slots,\n ),\n };\n }\n\n private mountTable(): void {\n const container = this.hostEl.nativeElement.querySelector(\"div\") as HTMLElement;\n if (!container) return;\n\n const { props, slotsKey, fullConfig } = this.buildConfig();\n this.instance = new SimpleTableVanilla(\n container,\n fullConfig,\n ) as unknown as TableInstance;\n this.instance.mount();\n this.syncedDefaultHeaders = resolveAngularColumns(props);\n this.syncedRows = props.rows;\n this.syncedSlotsKey = slotsKey;\n this.wasLoading = Boolean(props.isLoading);\n this.maybeRefitAutoSizeColumns(false);\n\n this.tableReady.emit(this.instance.getAPI() as unknown as TableAPI<TData>);\n }\n\n private applyConfig(): void {\n if (!this.instance) return;\n\n const { props, slotsKey, fullConfig } = this.buildConfig();\n const patch: Partial<SimpleTableConfig> = { ...fullConfig };\n const resolvedColumns = resolveAngularColumns(props);\n\n const headersUnchanged = headersStructurallyEqual(\n this.syncedDefaultHeaders,\n resolvedColumns,\n );\n this.syncedDefaultHeaders = resolvedColumns;\n const slotsChanged = slotsKey !== this.syncedSlotsKey;\n this.syncedSlotsKey = slotsKey;\n if (headersUnchanged && !slotsChanged) {\n delete patch.columns;\n }\n\n const rowsUnchanged = rowsShallowUnchanged(\n this.syncedRows as ReadonlyArray<object> | undefined,\n props.rows as ReadonlyArray<object>,\n props.getRowId as Parameters<typeof rowsShallowUnchanged>[2],\n );\n this.syncedRows = props.rows;\n if (rowsUnchanged) {\n delete patch.rows;\n }\n\n const isLoading = Boolean(props.isLoading);\n const leftLoading = this.wasLoading && !isLoading;\n this.wasLoading = isLoading;\n\n this.instance.update(patch);\n this.maybeRefitAutoSizeColumns(leftLoading);\n }\n\n ngAfterContentInit(): void {\n this.mountTable();\n const lists = [\n this.cellSlots,\n this.headerSlots,\n this.emptySlots,\n this.footerSlots,\n this.loadingSlots,\n this.errorSlots,\n ];\n for (const list of lists) {\n this.slotUnsub.push(list.changes.subscribe(() => this.applyConfig()));\n }\n }\n\n ngOnChanges(): void {\n this.applyConfig();\n }\n\n ngOnDestroy(): void {\n for (const sub of this.slotUnsub) sub.unsubscribe();\n this.slotUnsub = [];\n this.instance?.destroy();\n this.instance = null;\n this.syncedDefaultHeaders = undefined;\n this.syncedRows = undefined;\n this.registry.clear();\n }\n\n /** Returns the full imperative TableAPI. Use via @ViewChild or (tableReady) output. */\n getAPI(): TableAPI<TData> | null {\n return (this.instance?.getAPI() as TableAPI<TData> | undefined) ?? null;\n }\n\n private getProps(): SimpleTableAngularProps<TData> {\n const props: SimpleTableAngularProps<TData> = {\n rows: this.rows,\n };\n\n if (this.columns !== undefined) props.columns = this.columns;\n if (this.footerRenderer !== undefined) props.footerRenderer = this.footerRenderer;\n if (this.loadingStateRenderer !== undefined)\n props.loadingStateRenderer = this.loadingStateRenderer;\n if (this.errorStateRenderer !== undefined) props.errorStateRenderer = this.errorStateRenderer;\n if (this.emptyStateRenderer !== undefined) props.emptyStateRenderer = this.emptyStateRenderer;\n if (this.tableEmptyStateRenderer !== undefined)\n props.tableEmptyStateRenderer = this.tableEmptyStateRenderer;\n if (this.headerDropdown !== undefined) props.headerDropdown = this.headerDropdown;\n if (this.columnEditorConfig !== undefined) props.columnEditorConfig = this.columnEditorConfig;\n if (this.onNextPage !== undefined) props.onNextPage = this.onNextPage;\n if (this.onTableReady !== undefined) props.onTableReady = this.onTableReady;\n if (this.rowGrouping !== undefined) props.rowGrouping = this.rowGrouping;\n if (this.canExpandRowGroup !== undefined) props.canExpandRowGroup = this.canExpandRowGroup;\n if (this.enableStickyParents !== undefined)\n props.enableStickyParents = this.enableStickyParents;\n if (this.pivot !== undefined) props.pivot = this.pivot;\n if (this.enableRowSelection !== undefined) props.enableRowSelection = this.enableRowSelection;\n if (this.rowSelectionMode !== undefined) props.rowSelectionMode = this.rowSelectionMode;\n if (this.selectRowOnClick !== undefined) props.selectRowOnClick = this.selectRowOnClick;\n if (this.showRowSelectionColumn !== undefined)\n props.showRowSelectionColumn = this.showRowSelectionColumn;\n if (this.theme !== undefined) props.theme = this.theme;\n if (this.quickFilter !== undefined) props.quickFilter = this.quickFilter;\n if (this.isLoading !== undefined) props.isLoading = this.isLoading;\n if (this.getRowId !== undefined) props.getRowId = this.getRowId;\n if (this.getRowClass !== undefined) props.getRowClass = this.getRowClass;\n if (this.enablePagination !== undefined) props.enablePagination = this.enablePagination;\n if (this.rowsPerPage !== undefined) props.rowsPerPage = this.rowsPerPage;\n if (this.serverSidePagination !== undefined)\n props.serverSidePagination = this.serverSidePagination;\n if (this.totalRowCount !== undefined) props.totalRowCount = this.totalRowCount;\n if (this.height !== undefined) props.height = this.height;\n if (this.maxHeight !== undefined) props.maxHeight = this.maxHeight;\n if (this.scrollParent !== undefined) props.scrollParent = this.scrollParent;\n if (this.infiniteScrollThreshold !== undefined)\n props.infiniteScrollThreshold = this.infiniteScrollThreshold;\n if (this.columnResizing !== undefined) props.columnResizing = this.columnResizing;\n if (this.columnReordering !== undefined) props.columnReordering = this.columnReordering;\n if (this.enableColumnEditor !== undefined) props.enableColumnEditor = this.enableColumnEditor;\n if (this.enableColumnEditorInitOpen !== undefined)\n props.enableColumnEditorInitOpen = this.enableColumnEditorInitOpen;\n if (this.enablePivotPanel !== undefined) props.enablePivotPanel = this.enablePivotPanel;\n if (this.selectableCells !== undefined) props.selectableCells = this.selectableCells;\n if (this.selectableColumns !== undefined) props.selectableColumns = this.selectableColumns;\n if (this.enableHeaderEditing !== undefined)\n props.enableHeaderEditing = this.enableHeaderEditing;\n if (this.customTheme !== undefined) props.customTheme = this.customTheme;\n if (this.icons !== undefined) props.icons = this.icons;\n if (this.externalFilterHandling !== undefined)\n props.externalFilterHandling = this.externalFilterHandling;\n if (this.externalSortHandling !== undefined)\n props.externalSortHandling = this.externalSortHandling;\n if (this.columnBorders !== undefined) props.columnBorders = this.columnBorders;\n if (this.rowButtons !== undefined) props.rowButtons = this.rowButtons;\n if (this.hideFooter !== undefined) props.hideFooter = this.hideFooter;\n if (this.hideHeader !== undefined) props.hideHeader = this.hideHeader;\n if (this.footerRenderKey !== undefined) props.footerRenderKey = this.footerRenderKey;\n if (this.footerPosition !== undefined) props.footerPosition = this.footerPosition;\n if (this.className !== undefined) props.className = this.className;\n if (this.copyHeadersToClipboard !== undefined)\n props.copyHeadersToClipboard = this.copyHeadersToClipboard;\n if (this.includeHeadersInCSVExport !== undefined)\n props.includeHeadersInCSVExport = this.includeHeadersInCSVExport;\n if (this.initialSortColumn !== undefined) props.initialSortColumn = this.initialSortColumn;\n if (this.initialSortDirection !== undefined)\n props.initialSortDirection = this.initialSortDirection;\n if (this.expandAll !== undefined) props.expandAll = this.expandAll;\n if (this.autoExpandColumns !== undefined) props.autoExpandColumns = this.autoExpandColumns;\n if (this.animations !== undefined) props.animations = this.animations;\n if (this.cellUpdateFlash !== undefined) props.cellUpdateFlash = this.cellUpdateFlash;\n if (this.enableVirtualization !== undefined)\n props.enableVirtualization = this.enableVirtualization;\n if (this.hoverRowBackground !== undefined) props.hoverRowBackground = this.hoverRowBackground;\n if (this.oddColumnBackground !== undefined)\n props.oddColumnBackground = this.oddColumnBackground;\n if (this.oddEvenRowBackground !== undefined)\n props.oddEvenRowBackground = this.oddEvenRowBackground;\n\n if (this.onCellClick || this.cellClick.observed) {\n props.onCellClick = (event) => {\n this.inZone(() => {\n this.onCellClick?.(event);\n this.cellClick.emit(event);\n });\n };\n }\n if (this.onCellEdit || this.cellEdit.observed) {\n props.onCellEdit = (event) => {\n this.inZone(() => {\n this.onCellEdit?.(event);\n this.cellEdit.emit(event);\n });\n };\n }\n if (this.onSortChange || this.sortChange.observed) {\n props.onSortChange = (sort) => {\n this.inZone(() => {\n this.onSortChange?.(sort);\n this.sortChange.emit(sort);\n });\n };\n }\n if (this.onFilterChange || this.filterChange.observed) {\n props.onFilterChange = (filters) => {\n this.inZone(() => {\n this.onFilterChange?.(filters);\n this.filterChange.emit(filters);\n });\n };\n }\n if (this.onRowSelectionChange || this.rowSelectionChange.observed) {\n props.onRowSelectionChange = (event) => {\n this.inZone(() => {\n this.onRowSelectionChange?.(event);\n this.rowSelectionChange.emit(event);\n });\n };\n }\n if (this.onRowGroupExpand || this.rowGroupExpand.observed) {\n props.onRowGroupExpand = (event) => {\n return this.inZone(() => {\n const result = this.onRowGroupExpand?.(event);\n this.rowGroupExpand.emit(event);\n return result;\n });\n };\n }\n if (this.onColumnOrderChange || this.columnOrderChange.observed) {\n props.onColumnOrderChange = (headers) => {\n this.inZone(() => {\n this.onColumnOrderChange?.(headers);\n this.columnOrderChange.emit(headers);\n });\n };\n }\n if (this.onColumnVisibilityChange || this.columnVisibilityChange.observed) {\n props.onColumnVisibilityChange = (state) => {\n this.inZone(() => {\n this.onColumnVisibilityChange?.(state);\n this.columnVisibilityChange.emit(state);\n });\n };\n }\n if (this.onColumnWidthChange || this.columnWidthChange.observed) {\n props.onColumnWidthChange = (headers) => {\n this.inZone(() => {\n this.onColumnWidthChange?.(headers);\n this.columnWidthChange.emit(headers);\n });\n };\n }\n if (this.onPageChange || this.pageChange.observed) {\n props.onPageChange = (page) => {\n return this.inZone(() => {\n const result = this.onPageChange?.(page);\n this.pageChange.emit(page);\n return result;\n });\n };\n }\n if (this.onLoadMore || this.loadMore.observed) {\n props.onLoadMore = () => {\n this.inZone(() => {\n this.onLoadMore?.();\n this.loadMore.emit();\n });\n };\n }\n if (this.onHeaderEdit || this.headerEdit.observed) {\n props.onHeaderEdit = (header, newLabel) => {\n this.inZone(() => {\n this.onHeaderEdit?.(header, newLabel);\n this.headerEdit.emit({ header, newLabel });\n });\n };\n }\n if (this.onColumnSelect || this.columnSelect.observed) {\n props.onColumnSelect = (header) => {\n this.inZone(() => {\n this.onColumnSelect?.(header);\n this.columnSelect.emit(header);\n });\n };\n }\n if (this.onPivotChange || this.pivotChange.observed) {\n props.onPivotChange = (pivot) => {\n this.inZone(() => {\n this.onPivotChange?.(pivot);\n this.pivotChange.emit(pivot);\n });\n };\n }\n\n return props;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { SimpleTableComponent } from \"./SimpleTableComponent\";\nimport {\n StCellDirective,\n StDomSlotDirective,\n StEmptyDirective,\n StErrorDirective,\n StFooterDirective,\n StHeaderDirective,\n StLoadingDirective,\n} from \"./stDirectives\";\n\nconst ST_STANDALONE = [\n SimpleTableComponent,\n StCellDirective,\n StHeaderDirective,\n StEmptyDirective,\n StFooterDirective,\n StLoadingDirective,\n StErrorDirective,\n StDomSlotDirective,\n] as const;\n\n/**\n * One import for a page that uses `<simple-table>` plus `stCell` / `stEmpty` /\n * `(sortChange)` and the other template directives.\n *\n * ```ts\n * @Component({\n * standalone: true,\n * imports: [SimpleTableImports],\n * })\n * ```\n */\n@NgModule({\n imports: [...ST_STANDALONE],\n exports: [...ST_STANDALONE],\n})\nexport class SimpleTableImports {}\n","import type { EnvironmentProviders } from \"@angular/core\";\nimport { makeEnvironmentProviders } from \"@angular/core\";\n\n/**\n * Optional. Angular already provides `ApplicationRef` and `EnvironmentInjector`.\n * The table does not require this in `bootstrapApplication` / `providers`.\n *\n * Kept so existing apps that call it keep compiling. Future versions may add\n * real providers here without changing the call site.\n *\n * @example\n * bootstrapApplication(AppComponent, {\n * providers: [provideSimpleTable()],\n * });\n */\nexport function provideSimpleTable(): EnvironmentProviders {\n return makeEnvironmentProviders([]);\n}\n","// Component\nexport { SimpleTableComponent } from \"./lib/SimpleTableComponent\";\nexport { SimpleTableImports } from \"./lib/simpleTableImports\";\nexport {\n StCellDirective,\n StHeaderDirective,\n StEmptyDirective,\n StFooterDirective,\n StLoadingDirective,\n StErrorDirective,\n StDomSlotDirective,\n} from \"./lib/stDirectives\";\nexport { asRows } from \"simple-table-core\";\n\n// Provider helper\nexport { provideSimpleTable } from \"./lib/provideSimpleTable\";\n\n/** Wrap a standalone component as an HTMLElement (e.g. for one-shot slots). */\nexport { wrapAngularRenderer } from \"./utils/wrapAngularRenderer\";\n\n// Angular-specific props and type overrides\nexport type {\n SimpleTableAngularProps,\n TableInstance,\n AngularColumnDef,\n NestedAngularColumnDef,\n NestedTableAngularConfig,\n AngularIconsConfig,\n AngularIconSlot,\n AngularColumnEditorConfig,\n AngularCellRenderer,\n AngularHeaderRenderer,\n AngularFooterRenderer,\n AngularHeaderDropdown,\n AngularColumnEditorRowRenderer,\n AngularColumnEditorCustomRenderer,\n AngularLoadingStateRenderer,\n AngularErrorStateRenderer,\n AngularEmptyStateRenderer,\n AngularRowButton,\n AngularDefaultRowData,\n} from \"./types\";\n\n// Re-export vanilla types for callbacks and the imperative API via @ViewChild /\n// (tableReady). For column definitions on `SimpleTable`, use `AngularColumnDef`.\nexport type {\n Accessor,\n AggregationConfig,\n AggregationType,\n AnimationsConfig,\n AutoSizeMode,\n ColumnDef,\n Cell,\n CellChangeProps,\n CellClickProps,\n CellRenderer,\n CellRendererProps,\n CellValue,\n ChartOptions,\n ColumnEditorConfig,\n ColumnEditorRowRenderer,\n ColumnEditorRowRendererComponents,\n ColumnEditorCustomRenderer,\n ColumnEditorCustomRendererProps,\n ColumnEditorRowRendererProps,\n ColumnEditorSearchFunction,\n ColumnType,\n ColumnVisibilityState,\n Comparator,\n ComparatorProps,\n CustomTheme,\n CustomThemeProps,\n EmptyStateRenderer,\n EmptyStateRendererProps,\n EnumOption,\n ErrorStateRenderer,\n ErrorStateRendererProps,\n ExportToCSVProps,\n ExportValueGetter,\n ExportValueProps,\n FilterCondition,\n FilterOperator,\n StringFilterOperator,\n NumberFilterOperator,\n BooleanFilterOperator,\n DateFilterOperator,\n EnumFilterOperator,\n FooterRendererProps,\n FooterPosition,\n GetRowId,\n GetRowIdParams,\n GetRowClass,\n GetRowClassParams,\n HeaderDropdown,\n HeaderDropdownProps,\n HeaderRenderer,\n HeaderRendererComponents,\n HeaderRendererProps,\n IconsConfig,\n LoadingStateRenderer,\n LoadingStateRendererProps,\n OnRowGroupExpandProps,\n Pinned,\n PinnedSectionsState,\n PivotConfig,\n PivotValueConfig,\n PivotResult,\n QuickFilterConfig,\n QuickFilterGetter,\n QuickFilterGetterProps,\n QuickFilterMode,\n Row,\n RowButtonProps,\n RowId,\n RowSelectionChangeProps,\n RowSelectionMode,\n RowState,\n SetHeaderRenameProps,\n ShowWhen,\n SimpleTableConfig,\n SimpleTableProps,\n SortColumn,\n TableAPI,\n TableFilterState,\n TableRow,\n Theme,\n UpdateDataProps,\n ValueFormatter,\n ValueFormatterProps,\n ValueGetter,\n ValueGetterProps,\n} from \"simple-table-core\";\n\nexport {\n pivotRows,\n buildPivotAccessor,\n buildPivotRowTotalAccessor,\n PIVOT_IS_TOTAL_KEY,\n PIVOT_ACCESSOR_PREFIX,\n PIVOT_BLANK_LABEL,\n} from \"simple-table-core\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ST_RENDERER_GENERATION"],"mappings":"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"}
|