@simple-table/angular 4.1.0 → 4.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +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 type Type,\n} from \"@angular/core\";\nimport type { MountRegistry } from \"../MountRegistry\";\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 (e.g. `tableEmptyStateRenderer`) may omit it.\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): (props: Partial<P>) => HTMLElement {\n return (props: Partial<P>): HTMLElement => {\n const el = document.createElement(\"div\");\n\n const componentRef = createComponent(component, {\n environmentInjector: injector,\n hostElement: el,\n });\n\n // Assign input props to the component instance.\n Object.assign(componentRef.instance as object, props);\n\n // Attach to the application's view tree so Angular tracks it.\n appRef.attachView(componentRef.hostView);\n\n // Synchronous change detection flush — ensures the rendered output is\n // in the DOM before we return the element to the vanilla pipeline.\n componentRef.changeDetectorRef.detectChanges();\n\n registry?.register(el, () => {\n appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n\n return el;\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 */\nexport function wrapCachedAngularRenderer<P extends object>(\n component: Type<P>,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\n registry: MountRegistry,\n accessor: string,\n kind: \"cell\" | \"header\",\n): (props: Partial<P>) => HTMLElement {\n const cache = kind === \"cell\" ? registry.cellRendererCache : registry.headerRendererCache;\n const existing = cache.get(accessor);\n if (existing) {\n existing.component = component;\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 const wrapped = (props: Partial<P>): HTMLElement => {\n const el = document.createElement(\"div\");\n const componentRef = createComponent(slot.component, {\n environmentInjector: injector,\n hostElement: el,\n });\n Object.assign(componentRef.instance as object, props);\n appRef.attachView(componentRef.hostView);\n componentRef.changeDetectorRef.detectChanges();\n registry.register(el, () => {\n appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n return el;\n };\n slot.wrapped = wrapped;\n cache.set(accessor, slot);\n return wrapped;\n}\n","import type { ApplicationRef, EnvironmentInjector } 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 { wrapAngularRenderer, wrapCachedAngularRenderer } 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\nexport function buildVanillaConfig<TData extends AngularDefaultRowData = AngularDefaultRowData>(\n config: SimpleTableAngularProps<TData>,\n registry: MountRegistry,\n appRef: ApplicationRef,\n injector: EnvironmentInjector,\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 wrap = <P extends object>(component: any) =>\n wrapAngularRenderer<P>(component, appRef, injector, registry);\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 ? { rowRenderer: wrap(rowRenderer) as any } : {}),\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 appRef,\n injector,\n registry,\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 appRef,\n injector,\n registry,\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 ) 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 = tableEmptyStateRenderer;\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\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 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 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 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() onLoadMore?: SimpleTableAngularProps<TData>[\"onLoadMore\"];\n @Input() onTableReady?: SimpleTableAngularProps<TData>[\"onTableReady\"];\n @Input() rowGrouping?: SimpleTableAngularProps<TData>[\"rowGrouping\"];\n @Input() pivot?: SimpleTableAngularProps<TData>[\"pivot\"];\n @Input() onPivotChange?: SimpleTableAngularProps<TData>[\"onPivotChange\"];\n @Input() enableRowSelection?: SimpleTableAngularProps<TData>[\"enableRowSelection\"];\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() 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() selectableCells?: SimpleTableAngularProps<TData>[\"selectableCells\"];\n @Input() selectableColumns?: SimpleTableAngularProps<TData>[\"selectableColumns\"];\n @Input() enableHeaderEditing?: SimpleTableAngularProps<TData>[\"enableHeaderEditing\"];\n @Input() onHeaderEdit?: SimpleTableAngularProps<TData>[\"onHeaderEdit\"];\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() footerPosition?: SimpleTableAngularProps<TData>[\"footerPosition\"];\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() 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 hostEl = inject(ElementRef<HTMLElement>);\n private appRef = inject(ApplicationRef);\n private envInjector = inject(EnvironmentInjector);\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(props, this.registry, this.appRef, this.envInjector),\n ) as unknown as TableInstance;\n this.instance.mount();\n this.syncedDefaultHeaders = resolveAngularColumns(props);\n this.syncedRows = props.rows;\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(props, this.registry, this.appRef, this.envInjector);\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 this.instance.update(patch);\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.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.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.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.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.enableColumnEditorInitOpen !== undefined)\n props.enableColumnEditorInitOpen = this.enableColumnEditorInitOpen;\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.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.footerPosition !== undefined) props.footerPosition = this.footerPosition;\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.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 `tableEmptyStateRenderer`). */\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_CHILDREN_KEY,\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":";;;;;AAQA;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,mBAAmB,CACjC,SAAkB,EAClB,MAAsB,EACtB,QAA6B,EAC7B,QAAwB,EAAA;IAExB,OAAO,CAAC,KAAiB,KAAiB;QACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAExC,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,EAAE;AAC9C,YAAA,mBAAmB,EAAE,QAAQ;AAC7B,YAAA,WAAW,EAAE,EAAE;AAChB,SAAA,CAAC;;QAGF,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAkB,EAAE,KAAK,CAAC;;AAGrD,QAAA,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;;;AAIxC,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAE9C,QAAA,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAK;AAC1B,YAAA,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;YACxC,YAAY,CAAC,OAAO,EAAE;AACxB,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,EAAE;AACX,IAAA,CAAC;AACH;AAEA;;;AAGG;AACG,SAAU,yBAAyB,CACvC,SAAkB,EAClB,MAAsB,EACtB,QAA6B,EAC7B,QAAuB,EACvB,QAAgB,EAChB,IAAuB,EAAA;AAEvB,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;AACZ,QAAA,QAAQ,CAAC,SAAS,GAAG,SAAS;QAC9B,OAAO,QAAQ,CAAC,OAA6C;IAC/D;AAEA,IAAA,MAAM,IAAI,GAAwE;QAChF,SAAS;AACT,QAAA,OAAO,EAAE,IAAqD;KAC/D;AACD,IAAA,MAAM,OAAO,GAAG,CAAC,KAAiB,KAAiB;QACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACxC,QAAA,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE;AACnD,YAAA,mBAAmB,EAAE,QAAQ;AAC7B,YAAA,WAAW,EAAE,EAAE;AAChB,SAAA,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAkB,EAAE,KAAK,CAAC;AACrD,QAAA,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;AACxC,QAAA,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC9C,QAAA,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAK;AACzB,YAAA,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC;YACxC,YAAY,CAAC,OAAO,EAAE;AACxB,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,EAAE;AACX,IAAA,CAAC;AACD,IAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,IAAA,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzB,IAAA,OAAO,OAAO;AAChB;;ACvFA;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;AAEM,SAAU,kBAAkB,CAChC,MAAsC,EACtC,QAAuB,EACvB,MAAsB,EACtB,QAA6B,EAAA;IAE7B,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,IAAI,GAAG,CAAmB,SAAc,KAC5C,mBAAmB,CAAI,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAE/D,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,WAAW,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAQ,EAAE,GAAG,EAAE,CAAC;AACjE,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,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,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,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,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,CACF;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;AACzC,QAAA,aAAa,CAAC,uBAAuB,GAAG,uBAAuB;IACjE;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;;ACxOA;;;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;AAQpE,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;IAuBH;IA7CE,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;IAoBA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE;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;;ACpCD;;;;;;;;;AASG;MAOU,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;;AA2EY,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAmB;QAElD,IAAA,CAAA,QAAQ,GAAyB,IAAI;AACrC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,aAAa,EAAE;AAK9B,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;AA0JlD,IAAA;IAxJC,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;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CACpC,SAAS,EACT,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAC5C;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;AAE5B,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;AAC7B,QAAA,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;AAC1F,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;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7B;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,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,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,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,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,0BAA0B,KAAK,SAAS;AAC/C,YAAA,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B;AACpE,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,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,cAAc,KAAK,SAAS;AAAE,YAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;AACjF,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,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;+GAxOW,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,swEAHrB,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;;sBAGA;;;AC7GH;;;;;;;;;;;;;;;;;;;;AAoBG;SACa,kBAAkB,GAAA;AAChC,IAAA,OAAO,wBAAwB,CAAC;;;;;AAK/B,KAAA,CAAC;AACJ;;AC/BA;;ACAA;;AAEG;;;;"}
@@ -0,0 +1,263 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Type, OnInit, OnChanges, OnDestroy, EventEmitter, EnvironmentProviders, ApplicationRef, EnvironmentInjector } from '@angular/core';
3
+ import { CellValue, CellRenderer, ColumnDef, HeaderRenderer, SimpleTableProps, ColumnEditorConfig, SimpleTableConfig, TableAPI } from 'simple-table-core';
4
+ export { Accessor, AggregationConfig, AggregationType, AnimationsConfig, AutoSizeMode, BooleanFilterOperator, Cell, CellChangeProps, CellClickProps, CellRenderer, CellRendererProps, CellValue, ChartOptions, ColumnDef, ColumnEditorConfig, ColumnEditorCustomRenderer, ColumnEditorCustomRendererProps, ColumnEditorRowRenderer, ColumnEditorRowRendererComponents, ColumnEditorRowRendererProps, ColumnEditorSearchFunction, ColumnType, ColumnVisibilityState, Comparator, ComparatorProps, CustomTheme, CustomThemeProps, DateFilterOperator, EmptyStateRenderer, EmptyStateRendererProps, EnumFilterOperator, EnumOption, ErrorStateRenderer, ErrorStateRendererProps, ExportToCSVProps, ExportValueGetter, ExportValueProps, FilterCondition, FilterOperator, FooterPosition, FooterRendererProps, GetRowClass, GetRowClassParams, GetRowId, GetRowIdParams, HeaderDropdown, HeaderDropdownProps, HeaderRenderer, HeaderRendererComponents, HeaderRendererProps, IconsConfig, LoadingStateRenderer, LoadingStateRendererProps, NumberFilterOperator, OnRowGroupExpandProps, PIVOT_ACCESSOR_PREFIX, PIVOT_BLANK_LABEL, PIVOT_CHILDREN_KEY, PIVOT_IS_TOTAL_KEY, Pinned, PinnedSectionsState, PivotConfig, PivotResult, PivotValueConfig, QuickFilterConfig, QuickFilterGetter, QuickFilterGetterProps, QuickFilterMode, Row, RowButtonProps, RowId, RowSelectionChangeProps, RowSelectionMode, RowState, SetHeaderRenameProps, ShowWhen, SimpleTableConfig, SimpleTableProps, SortColumn, StringFilterOperator, TableAPI, TableFilterState, TableRow, Theme, UpdateDataProps, ValueFormatter, ValueFormatterProps, ValueGetter, ValueGetterProps, asRows, buildPivotAccessor, buildPivotRowTotalAccessor, pivotRows } from 'simple-table-core';
5
+
6
+ /**
7
+ * Default `TData` for Angular props bags / helpers: open records so untyped
8
+ * object arrays keep assigning to `rows` without `asRows`.
9
+ *
10
+ * Prefer typed `rows` / `columns` (`AngularColumnDef<MyRow>`) so `TData` flows
11
+ * into callbacks. Template/`@Input` inference is weaker than React/Solid JSX —
12
+ * typed column defs and a typed `SimpleTableComponent<MyRow>` ViewChild still
13
+ * give the demo win. Angular cell components stay `Type<unknown>` (see below).
14
+ */
15
+ type AngularDefaultRowData = Record<string, any>;
16
+ interface TableInstance {
17
+ mount(): void;
18
+ update(config: Partial<SimpleTableConfig>): void;
19
+ destroy(): void;
20
+ getAPI(): TableAPI;
21
+ }
22
+ /**
23
+ * Angular table slots are component class refs (`Type<unknown>`), not `Type<SomeProps>`.
24
+ * `Type<CellRendererProps>` would mean `new () => CellRendererProps`, but cell components
25
+ * construct decorated classes whose instances are not structurally `CellRendererProps`
26
+ * even though the adapter binds those values via `@Input()` at runtime. The concrete
27
+ * input contract for each slot remains the matching `*RendererProps` type from
28
+ * `simple-table-core` (re-exported below). Function (vanilla) renderers keep `TData`.
29
+ */
30
+ /** Angular component class, or a core vanilla renderer (non-`ɵcmp` values pass through). */
31
+ type AngularCellRenderer<TData extends AngularDefaultRowData = AngularDefaultRowData, TValue = CellValue> = Type<unknown> | CellRenderer<TData, TValue>;
32
+ type AngularHeaderRenderer<TData extends AngularDefaultRowData = AngularDefaultRowData> = Type<unknown> | HeaderRenderer<TData>;
33
+ type AngularFooterRenderer = Type<unknown>;
34
+ type AngularHeaderDropdown = Type<unknown>;
35
+ type AngularColumnEditorRowRenderer = Type<unknown>;
36
+ type AngularColumnEditorCustomRenderer = Type<unknown>;
37
+ type AngularLoadingStateRenderer = Type<unknown>;
38
+ type AngularErrorStateRenderer = Type<unknown>;
39
+ type AngularEmptyStateRenderer = Type<unknown>;
40
+ type AngularRowButton = Type<unknown>;
41
+ /** Per-slot icon: Angular component or vanilla element/string (pass-through). */
42
+ type AngularIconSlot = Type<unknown> | SVGSVGElement | HTMLElement | string;
43
+ interface AngularIconsConfig {
44
+ drag?: AngularIconSlot;
45
+ expand?: AngularIconSlot;
46
+ filter?: AngularIconSlot;
47
+ headerCollapse?: AngularIconSlot;
48
+ headerExpand?: AngularIconSlot;
49
+ next?: AngularIconSlot;
50
+ prev?: AngularIconSlot;
51
+ sortDown?: AngularIconSlot;
52
+ sortUp?: AngularIconSlot;
53
+ pinnedLeftIcon?: AngularIconSlot;
54
+ pinnedRightIcon?: AngularIconSlot;
55
+ }
56
+ interface AngularColumnEditorConfig extends Omit<ColumnEditorConfig, "rowRenderer" | "customRenderer"> {
57
+ rowRenderer?: AngularColumnEditorRowRenderer;
58
+ customRenderer?: AngularColumnEditorCustomRenderer;
59
+ }
60
+ /**
61
+ * Column definition for `columns`: same column metadata as core
62
+ * columns, but `cellRenderer` / `headerRenderer` / `children` / `nestedTable` are Angular-only.
63
+ */
64
+ interface AngularColumnDef<TData extends AngularDefaultRowData = AngularDefaultRowData, TValue = CellValue> extends Omit<ColumnDef<TData, TValue>, "cellRenderer" | "headerRenderer" | "children" | "nestedTable"> {
65
+ cellRenderer?: AngularCellRenderer<TData, TValue>;
66
+ headerRenderer?: AngularHeaderRenderer<TData>;
67
+ children?: ReadonlyArray<AngularColumnDef<TData, any>>;
68
+ /** Nested grid; child columns may use a different row type than `TData`. */
69
+ nestedTable?: NestedTableAngularConfig;
70
+ }
71
+ interface SimpleTableAngularProps<TData extends AngularDefaultRowData = AngularDefaultRowData> extends Omit<SimpleTableProps<TData>, "rows" | "columns" | "footerRenderer" | "emptyStateRenderer" | "errorStateRenderer" | "loadingStateRenderer" | "tableEmptyStateRenderer" | "headerDropdown" | "columnEditorConfig" | "icons" | "rowButtons" | "onColumnOrderChange" | "onColumnWidthChange" | "onHeaderEdit" | "onColumnSelect"> {
72
+ /** Column definitions. */
73
+ columns?: ReadonlyArray<AngularColumnDef<TData, any>>;
74
+ onColumnOrderChange?: (newHeaders: AngularColumnDef<TData, any>[]) => void;
75
+ onColumnWidthChange?: (headers: AngularColumnDef<TData, any>[]) => void;
76
+ onHeaderEdit?: (header: AngularColumnDef<TData, any>, newLabel: string) => void;
77
+ onColumnSelect?: (header: AngularColumnDef<TData, any>) => void;
78
+ /** Row data; cast to vanilla `Row[]` inside the adapter. */
79
+ rows: readonly TData[];
80
+ footerRenderer?: AngularFooterRenderer;
81
+ loadingStateRenderer?: AngularLoadingStateRenderer;
82
+ errorStateRenderer?: AngularErrorStateRenderer;
83
+ emptyStateRenderer?: AngularEmptyStateRenderer;
84
+ tableEmptyStateRenderer?: HTMLElement | string | null;
85
+ headerDropdown?: AngularHeaderDropdown;
86
+ columnEditorConfig?: AngularColumnEditorConfig;
87
+ icons?: AngularIconsConfig;
88
+ /** Per-row action buttons; each entry is an Angular component rendered into the row's selection column. */
89
+ rowButtons?: AngularRowButton[];
90
+ }
91
+ /**
92
+ * TData-bound call signatures omitted at nest boundaries so
93
+ * `AngularColumnDef<Child>[]` assigns under a parent column without casts/`any`.
94
+ * Child columns stay fully checked at their own declaration site.
95
+ */
96
+ type AngularColumnDefCallbacks = "cellRenderer" | "headerRenderer" | "children" | "nestedTable" | "comparator" | "exportValueGetter" | "valueFormatter" | "valueGetter" | "quickFilterGetter";
97
+ /** Column shape accepted on nested grids — metadata only, no TData-bound callbacks. */
98
+ type NestedAngularColumnDef = Omit<AngularColumnDef<AngularDefaultRowData>, AngularColumnDefCallbacks> & {
99
+ children?: ReadonlyArray<NestedAngularColumnDef>;
100
+ nestedTable?: NestedTableAngularConfig;
101
+ };
102
+ /**
103
+ * Nested grid props (no `rows` / inherited state renderers).
104
+ * Child row shape may differ from the parent column's `TData`.
105
+ */
106
+ type NestedTableAngularConfig = Omit<SimpleTableAngularProps, "rows" | "columns" | "loadingStateRenderer" | "errorStateRenderer" | "emptyStateRenderer" | "tableEmptyStateRenderer"> & {
107
+ columns?: ReadonlyArray<NestedAngularColumnDef>;
108
+ };
109
+
110
+ /**
111
+ * SimpleTable — Angular adapter for simple-table-core.
112
+ *
113
+ * Accepts the same props as SimpleTableProps (the vanilla user-facing API) but
114
+ * with Angular component types for all renderer props.
115
+ *
116
+ * Prefer typed `rows` / `columns` (`AngularColumnDef<MyRow>`). For a typed
117
+ * imperative handle, use `@ViewChild(SimpleTableComponent) table!: SimpleTableComponent<MyRow>`
118
+ * or listen to `(tableReady)`.
119
+ */
120
+ declare class SimpleTableComponent<TData extends AngularDefaultRowData = AngularDefaultRowData> implements OnInit, OnChanges, OnDestroy {
121
+ rows: SimpleTableAngularProps<TData>["rows"];
122
+ columns?: SimpleTableAngularProps<TData>["columns"];
123
+ footerRenderer?: SimpleTableAngularProps<TData>["footerRenderer"];
124
+ loadingStateRenderer?: SimpleTableAngularProps<TData>["loadingStateRenderer"];
125
+ errorStateRenderer?: SimpleTableAngularProps<TData>["errorStateRenderer"];
126
+ emptyStateRenderer?: SimpleTableAngularProps<TData>["emptyStateRenderer"];
127
+ tableEmptyStateRenderer?: SimpleTableAngularProps<TData>["tableEmptyStateRenderer"];
128
+ headerDropdown?: SimpleTableAngularProps<TData>["headerDropdown"];
129
+ columnEditorConfig?: SimpleTableAngularProps<TData>["columnEditorConfig"];
130
+ onCellClick?: SimpleTableAngularProps<TData>["onCellClick"];
131
+ onCellEdit?: SimpleTableAngularProps<TData>["onCellEdit"];
132
+ onSortChange?: SimpleTableAngularProps<TData>["onSortChange"];
133
+ onFilterChange?: SimpleTableAngularProps<TData>["onFilterChange"];
134
+ onRowSelectionChange?: SimpleTableAngularProps<TData>["onRowSelectionChange"];
135
+ onRowGroupExpand?: SimpleTableAngularProps<TData>["onRowGroupExpand"];
136
+ onColumnOrderChange?: SimpleTableAngularProps<TData>["onColumnOrderChange"];
137
+ onColumnVisibilityChange?: SimpleTableAngularProps<TData>["onColumnVisibilityChange"];
138
+ onColumnWidthChange?: SimpleTableAngularProps<TData>["onColumnWidthChange"];
139
+ onPageChange?: SimpleTableAngularProps<TData>["onPageChange"];
140
+ onLoadMore?: SimpleTableAngularProps<TData>["onLoadMore"];
141
+ onTableReady?: SimpleTableAngularProps<TData>["onTableReady"];
142
+ rowGrouping?: SimpleTableAngularProps<TData>["rowGrouping"];
143
+ pivot?: SimpleTableAngularProps<TData>["pivot"];
144
+ onPivotChange?: SimpleTableAngularProps<TData>["onPivotChange"];
145
+ enableRowSelection?: SimpleTableAngularProps<TData>["enableRowSelection"];
146
+ theme?: SimpleTableAngularProps<TData>["theme"];
147
+ quickFilter?: SimpleTableAngularProps<TData>["quickFilter"];
148
+ isLoading?: SimpleTableAngularProps<TData>["isLoading"];
149
+ getRowId?: SimpleTableAngularProps<TData>["getRowId"];
150
+ enablePagination?: SimpleTableAngularProps<TData>["enablePagination"];
151
+ rowsPerPage?: SimpleTableAngularProps<TData>["rowsPerPage"];
152
+ serverSidePagination?: SimpleTableAngularProps<TData>["serverSidePagination"];
153
+ totalRowCount?: SimpleTableAngularProps<TData>["totalRowCount"];
154
+ height?: SimpleTableAngularProps<TData>["height"];
155
+ maxHeight?: SimpleTableAngularProps<TData>["maxHeight"];
156
+ scrollParent?: SimpleTableAngularProps<TData>["scrollParent"];
157
+ infiniteScrollThreshold?: SimpleTableAngularProps<TData>["infiniteScrollThreshold"];
158
+ columnResizing?: SimpleTableAngularProps<TData>["columnResizing"];
159
+ columnReordering?: SimpleTableAngularProps<TData>["columnReordering"];
160
+ enableColumnEditor?: SimpleTableAngularProps<TData>["enableColumnEditor"];
161
+ enableColumnEditorInitOpen?: SimpleTableAngularProps<TData>["enableColumnEditorInitOpen"];
162
+ selectableCells?: SimpleTableAngularProps<TData>["selectableCells"];
163
+ selectableColumns?: SimpleTableAngularProps<TData>["selectableColumns"];
164
+ enableHeaderEditing?: SimpleTableAngularProps<TData>["enableHeaderEditing"];
165
+ onHeaderEdit?: SimpleTableAngularProps<TData>["onHeaderEdit"];
166
+ customTheme?: SimpleTableAngularProps<TData>["customTheme"];
167
+ icons?: SimpleTableAngularProps<TData>["icons"];
168
+ externalFilterHandling?: SimpleTableAngularProps<TData>["externalFilterHandling"];
169
+ externalSortHandling?: SimpleTableAngularProps<TData>["externalSortHandling"];
170
+ columnBorders?: SimpleTableAngularProps<TData>["columnBorders"];
171
+ rowButtons?: SimpleTableAngularProps<TData>["rowButtons"];
172
+ hideFooter?: SimpleTableAngularProps<TData>["hideFooter"];
173
+ footerPosition?: SimpleTableAngularProps<TData>["footerPosition"];
174
+ initialSortColumn?: SimpleTableAngularProps<TData>["initialSortColumn"];
175
+ initialSortDirection?: SimpleTableAngularProps<TData>["initialSortDirection"];
176
+ expandAll?: SimpleTableAngularProps<TData>["expandAll"];
177
+ autoExpandColumns?: SimpleTableAngularProps<TData>["autoExpandColumns"];
178
+ animations?: SimpleTableAngularProps<TData>["animations"];
179
+ enableVirtualization?: SimpleTableAngularProps<TData>["enableVirtualization"];
180
+ hoverRowBackground?: SimpleTableAngularProps<TData>["hoverRowBackground"];
181
+ oddColumnBackground?: SimpleTableAngularProps<TData>["oddColumnBackground"];
182
+ oddEvenRowBackground?: SimpleTableAngularProps<TData>["oddEvenRowBackground"];
183
+ /** Emits the TableAPI once the table has mounted. */
184
+ tableReady: EventEmitter<TableAPI<TData>>;
185
+ private instance;
186
+ private registry;
187
+ private syncedDefaultHeaders;
188
+ private syncedRows;
189
+ private hostEl;
190
+ private appRef;
191
+ private envInjector;
192
+ ngOnInit(): void;
193
+ ngOnChanges(): void;
194
+ ngOnDestroy(): void;
195
+ /** Returns the full imperative TableAPI. Use via @ViewChild or (tableReady) output. */
196
+ getAPI(): TableAPI<TData> | null;
197
+ private getProps;
198
+ static ɵfac: i0.ɵɵFactoryDeclaration<SimpleTableComponent<any>, never>;
199
+ static ɵcmp: i0.ɵɵComponentDeclaration<SimpleTableComponent<any>, "simple-table", never, { "rows": { "alias": "rows"; "required": true; }; "columns": { "alias": "columns"; "required": false; }; "footerRenderer": { "alias": "footerRenderer"; "required": false; }; "loadingStateRenderer": { "alias": "loadingStateRenderer"; "required": false; }; "errorStateRenderer": { "alias": "errorStateRenderer"; "required": false; }; "emptyStateRenderer": { "alias": "emptyStateRenderer"; "required": false; }; "tableEmptyStateRenderer": { "alias": "tableEmptyStateRenderer"; "required": false; }; "headerDropdown": { "alias": "headerDropdown"; "required": false; }; "columnEditorConfig": { "alias": "columnEditorConfig"; "required": false; }; "onCellClick": { "alias": "onCellClick"; "required": false; }; "onCellEdit": { "alias": "onCellEdit"; "required": false; }; "onSortChange": { "alias": "onSortChange"; "required": false; }; "onFilterChange": { "alias": "onFilterChange"; "required": false; }; "onRowSelectionChange": { "alias": "onRowSelectionChange"; "required": false; }; "onRowGroupExpand": { "alias": "onRowGroupExpand"; "required": false; }; "onColumnOrderChange": { "alias": "onColumnOrderChange"; "required": false; }; "onColumnVisibilityChange": { "alias": "onColumnVisibilityChange"; "required": false; }; "onColumnWidthChange": { "alias": "onColumnWidthChange"; "required": false; }; "onPageChange": { "alias": "onPageChange"; "required": false; }; "onLoadMore": { "alias": "onLoadMore"; "required": false; }; "onTableReady": { "alias": "onTableReady"; "required": false; }; "rowGrouping": { "alias": "rowGrouping"; "required": false; }; "pivot": { "alias": "pivot"; "required": false; }; "onPivotChange": { "alias": "onPivotChange"; "required": false; }; "enableRowSelection": { "alias": "enableRowSelection"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "quickFilter": { "alias": "quickFilter"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "getRowId": { "alias": "getRowId"; "required": false; }; "enablePagination": { "alias": "enablePagination"; "required": false; }; "rowsPerPage": { "alias": "rowsPerPage"; "required": false; }; "serverSidePagination": { "alias": "serverSidePagination"; "required": false; }; "totalRowCount": { "alias": "totalRowCount"; "required": false; }; "height": { "alias": "height"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "scrollParent": { "alias": "scrollParent"; "required": false; }; "infiniteScrollThreshold": { "alias": "infiniteScrollThreshold"; "required": false; }; "columnResizing": { "alias": "columnResizing"; "required": false; }; "columnReordering": { "alias": "columnReordering"; "required": false; }; "enableColumnEditor": { "alias": "enableColumnEditor"; "required": false; }; "enableColumnEditorInitOpen": { "alias": "enableColumnEditorInitOpen"; "required": false; }; "selectableCells": { "alias": "selectableCells"; "required": false; }; "selectableColumns": { "alias": "selectableColumns"; "required": false; }; "enableHeaderEditing": { "alias": "enableHeaderEditing"; "required": false; }; "onHeaderEdit": { "alias": "onHeaderEdit"; "required": false; }; "customTheme": { "alias": "customTheme"; "required": false; }; "icons": { "alias": "icons"; "required": false; }; "externalFilterHandling": { "alias": "externalFilterHandling"; "required": false; }; "externalSortHandling": { "alias": "externalSortHandling"; "required": false; }; "columnBorders": { "alias": "columnBorders"; "required": false; }; "rowButtons": { "alias": "rowButtons"; "required": false; }; "hideFooter": { "alias": "hideFooter"; "required": false; }; "footerPosition": { "alias": "footerPosition"; "required": false; }; "initialSortColumn": { "alias": "initialSortColumn"; "required": false; }; "initialSortDirection": { "alias": "initialSortDirection"; "required": false; }; "expandAll": { "alias": "expandAll"; "required": false; }; "autoExpandColumns": { "alias": "autoExpandColumns"; "required": false; }; "animations": { "alias": "animations"; "required": false; }; "enableVirtualization": { "alias": "enableVirtualization"; "required": false; }; "hoverRowBackground": { "alias": "hoverRowBackground"; "required": false; }; "oddColumnBackground": { "alias": "oddColumnBackground"; "required": false; }; "oddEvenRowBackground": { "alias": "oddEvenRowBackground"; "required": false; }; }, { "tableReady": "tableReady"; }, never, never, true, never>;
200
+ }
201
+
202
+ /**
203
+ * Call this in your application's `providers` array (or `bootstrapApplication`
204
+ * providers) to register the dependencies that simple-table-angular's renderer
205
+ * bridge needs — specifically `ApplicationRef` and `EnvironmentInjector`.
206
+ *
207
+ * These are already provided by Angular's platform by default, so in practice
208
+ * this function is a no-op placeholder that serves as a clear signal to
209
+ * consumers that the adapter has been correctly wired up. If future versions
210
+ * need custom providers they will be added here without breaking the call site.
211
+ *
212
+ * @example
213
+ * // main.ts
214
+ * bootstrapApplication(AppComponent, {
215
+ * providers: [provideSimpleTable()],
216
+ * });
217
+ *
218
+ * @example
219
+ * // app.module.ts
220
+ * @NgModule({ providers: [provideSimpleTable()] })
221
+ * export class AppModule {}
222
+ */
223
+ declare function provideSimpleTable(): EnvironmentProviders;
224
+
225
+ type CachedRendererSlot<T = unknown> = {
226
+ component: T;
227
+ wrapped: unknown;
228
+ };
229
+ declare class MountRegistry {
230
+ private entries;
231
+ private nextId;
232
+ readonly cellRendererCache: Map<string, CachedRendererSlot<unknown>>;
233
+ readonly headerRendererCache: Map<string, CachedRendererSlot<unknown>>;
234
+ register(container: HTMLElement, dispose: () => void): void;
235
+ disposeHost: (host: HTMLElement) => void;
236
+ clear(): void;
237
+ pruneRendererCaches(liveAccessors: ReadonlySet<string>): void;
238
+ get size(): number;
239
+ }
240
+
241
+ /**
242
+ * Wraps an Angular standalone component into a function that returns an
243
+ * HTMLElement, matching the vanilla renderer contract expected by
244
+ * simple-table-core.
245
+ *
246
+ * Requires references to the running Angular ApplicationRef and
247
+ * EnvironmentInjector so it can attach the dynamically-created component
248
+ * to the change detection tree and trigger a synchronous flush before
249
+ * returning the element to the vanilla rendering pipeline.
250
+ *
251
+ * Pass an optional {@link MountRegistry} so core's `onRendererHostDiscard` can
252
+ * destroy the ComponentRef (including any CDK Overlay / floating UI) when the
253
+ * host is discarded. The table adapter always supplies a registry; the public
254
+ * helper used for one-shot static slots (e.g. `tableEmptyStateRenderer`) may omit it.
255
+ *
256
+ * These are injected automatically when the consumer uses
257
+ * `provideSimpleTable()` in their application providers.
258
+ */
259
+ declare function wrapAngularRenderer<P extends object>(component: Type<P>, appRef: ApplicationRef, injector: EnvironmentInjector, registry?: MountRegistry): (props: Partial<P>) => HTMLElement;
260
+
261
+ export { SimpleTableComponent, provideSimpleTable, wrapAngularRenderer };
262
+ export type { AngularCellRenderer, AngularColumnDef, AngularColumnEditorConfig, AngularColumnEditorCustomRenderer, AngularColumnEditorRowRenderer, AngularDefaultRowData, AngularEmptyStateRenderer, AngularErrorStateRenderer, AngularFooterRenderer, AngularHeaderDropdown, AngularHeaderRenderer, AngularIconSlot, AngularIconsConfig, AngularLoadingStateRenderer, AngularRowButton, NestedAngularColumnDef, NestedTableAngularConfig, SimpleTableAngularProps, TableInstance };
263
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":["../src/types.ts","../src/lib/SimpleTableComponent.ts","../src/lib/provideSimpleTable.ts","../src/MountRegistry.ts","../src/utils/wrapAngularRenderer.ts"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "name": "@simple-table/angular",
3
- "version": "4.1.0",
4
- "main": "dist/cjs/index.js",
5
- "module": "dist/index.es.js",
6
- "types": "dist/types/index.d.ts",
3
+ "version": "4.1.2",
4
+ "type": "module",
5
+ "main": "./dist/fesm2022/simple-table-angular.mjs",
6
+ "module": "./dist/fesm2022/simple-table-angular.mjs",
7
+ "types": "./dist/index.d.ts",
7
8
  "sideEffects": [
8
9
  "*.css",
9
10
  "**/*.css"
10
11
  ],
11
12
  "exports": {
12
13
  ".": {
13
- "import": "./dist/index.es.js",
14
- "require": "./dist/cjs/index.js",
15
- "types": "./dist/types/index.d.ts"
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/fesm2022/simple-table-angular.mjs",
16
+ "default": "./dist/fesm2022/simple-table-angular.mjs"
16
17
  },
17
18
  "./styles.css": {
18
19
  "types": "./styles.css.d.ts",
@@ -24,8 +25,12 @@
24
25
  "access": "public"
25
26
  },
26
27
  "files": [
27
- "dist",
28
+ "dist/fesm2022",
29
+ "dist/index.d.ts",
30
+ "dist/index.d.ts.map",
31
+ "dist/styles.css",
28
32
  "LICENSE",
33
+ "README.md",
29
34
  "styles.css.d.ts"
30
35
  ],
31
36
  "peerDependencies": {
@@ -33,23 +38,17 @@
33
38
  "@angular/core": ">=17.0.0 <22.0.0"
34
39
  },
35
40
  "dependencies": {
36
- "simple-table-core": "4.1.0"
41
+ "tslib": "^2.8.1",
42
+ "simple-table-core": "4.1.2"
37
43
  },
38
44
  "devDependencies": {
39
- "@angular/common": "^20.0.0",
40
- "@angular/compiler": "^20.0.0",
41
- "@angular/compiler-cli": "^20.0.0",
42
- "@angular/core": "^20.0.0",
43
- "@rollup/plugin-alias": "4.0.0",
44
- "@rollup/plugin-node-resolve": "^15.3.0",
45
+ "@angular/common": "^20.3.27",
46
+ "@angular/compiler": "^20.3.27",
47
+ "@angular/compiler-cli": "^20.3.27",
48
+ "@angular/core": "^20.3.27",
45
49
  "@types/node": "^16.18.126",
46
50
  "jsdom": "^24.1.3",
47
- "rollup": "^2.79.2",
48
- "rollup-plugin-delete": "^2.1.0",
49
- "rollup-plugin-peer-deps-external": "^2.2.4",
50
- "rollup-plugin-terser": "^7.0.2",
51
- "rollup-plugin-typescript2": "^0.37.0",
52
- "tslib": "^2.8.1",
51
+ "ng-packagr": "^20.3.2",
53
52
  "typescript": "^5.9.0",
54
53
  "vitest": "^2.1.9",
55
54
  "zone.js": "^0.15.0"
@@ -100,10 +99,11 @@
100
99
  "typescript data grid"
101
100
  ],
102
101
  "scripts": {
103
- "build": "rollup -c",
104
- "preview": "rollup -c -w",
102
+ "build": "ng-packagr -p ng-package.json -c tsconfig.lib.json && node scripts/copy-styles.mjs",
103
+ "preview": "node scripts/copy-styles.mjs && ng-packagr -p ng-package.json -c tsconfig.lib.json --watch",
105
104
  "typecheck": "tsc -p tsconfig.json --noEmit",
106
- "test": "vitest run",
105
+ "test": "vitest run --exclude src/__tests__/consumerStandaloneImport.compiler.test.ts",
106
+ "test:consumer": "vitest run src/__tests__/consumerStandaloneImport.compiler.test.ts",
107
107
  "version:patch": "npm version patch && git push && git push --tags",
108
108
  "version:minor": "npm version minor && git push && git push --tags",
109
109
  "version:major": "npm version major && git push && git push --tags"
package/dist/cjs/index.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@angular/core"),o=require("simple-table-core");function t(e,o,t,n){var i,r=arguments.length,p=r<3?o:null===n?n=Object.getOwnPropertyDescriptor(o,t):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)p=Reflect.decorate(e,o,t,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(p=(r<3?i(p):r>3?i(o,t,p):i(o,t))||p);return r>3&&p&&Object.defineProperty(o,t,p),p}function n(o,t,n,i){return r=>{const p=document.createElement("div"),s=e.createComponent(o,{environmentInjector:n,hostElement:p});return Object.assign(s.instance,r),t.attachView(s.hostView),s.changeDetectorRef.detectChanges(),i?.register(p,()=>{t.detachView(s.hostView),s.destroy()}),p}}function i(o,t,n,i,r,p){const s="cell"===p?i.cellRendererCache:i.headerRendererCache,l=s.get(r);if(l)return l.component=o,l.wrapped;const a={component:o,wrapped:null},d=o=>{const r=document.createElement("div"),p=e.createComponent(a.component,{environmentInjector:n,hostElement:r});return Object.assign(p.instance,o),t.attachView(p.hostView),p.changeDetectorRef.detectChanges(),i.register(r,()=>{t.detachView(p.hostView),p.destroy()}),r};return a.wrapped=d,s.set(r,a),d}function r(e){const o=e.columns;if(!o)throw new Error("SimpleTable requires `columns`");return o}function p(e,t,s,l){const{columns:a,rows:d,footerRenderer:h,emptyStateRenderer:u,errorStateRenderer:m,loadingStateRenderer:c,tableEmptyStateRenderer:C,headerDropdown:v,columnEditorConfig:g,icons:b,rowButtons:S,onColumnOrderChange:R,onColumnWidthChange:y,onHeaderEdit:w,onColumnSelect:x,enableColumnEditor:I,enableColumnEditorInitOpen:T,enablePagination:f,onTableReady:E,hoverRowBackground:P,oddColumnBackground:O,oddEvenRowBackground:B,...k}=e,H=e=>n(e,s,l,t),A=r(e);t.pruneRendererCaches(o.collectHeaderAccessors(A));const V={...k,rows:o.asRows(d),columns:A.map(function e(o){const{cellRenderer:n,headerRenderer:r,children:a,nestedTable:d,...h}=o,u=String(o.accessor),m={...h};if(n&&(m.cellRenderer=n.ɵcmp?i(n,s,l,t,u,"cell"):n),r&&(m.headerRenderer=r.ɵcmp?i(r,s,l,t,u,"header"):r),a&&(m.children=a.map(e)),d){const e={...d,rows:[]};m.nestedTable=p(e,t,s,l)}return m}),enableColumnEditor:I,enableColumnEditorInitOpen:T,enablePagination:f,onTableReady:E,hoverRowBackground:P,oddColumnBackground:O,oddEvenRowBackground:B,onRendererHostDiscard:t.disposeHost};return R&&(V.onColumnOrderChange=e=>R(e)),y&&(V.onColumnWidthChange=e=>y(e)),w&&(V.onHeaderEdit=(e,o)=>w(e,o)),x&&(V.onColumnSelect=e=>x(e)),void 0!==h&&(V.footerRenderer=h.ɵcmp?H(h):h),void 0!==u&&(V.emptyStateRenderer=u.ɵcmp?H(u):u),void 0!==m&&(V.errorStateRenderer=m.ɵcmp?H(m):m),void 0!==c&&(V.loadingStateRenderer=c.ɵcmp?H(c):c),void 0!==C&&(V.tableEmptyStateRenderer=C),void 0!==v&&(V.headerDropdown=H(v)),void 0!==g&&(V.columnEditorConfig=function(e){const{rowRenderer:o,customRenderer:t,...n}=e;return{...n,...o?{rowRenderer:H(o)}:{},...t?{customRenderer:H(t)}:{}}}(g)),void 0!==b&&(V.icons=function(e){const o={};for(const[t,n]of Object.entries(e))null!=n&&(o[t]="string"==typeof n||n instanceof HTMLElement||n instanceof SVGSVGElement?n:n.ɵcmp?H(n)({}):n);return o}(b)),void 0!==S&&(V.rowButtons=S.map(e=>H(e))),V}"function"==typeof SuppressedError&&SuppressedError;const s="data-st-mount-id";class l{constructor(){this.entries=new Map,this.nextId=0,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const o=[],t=e.getAttribute(s);null!==t&&o.push(t),e.querySelectorAll(`[${s}]`).forEach(e=>{const t=e.getAttribute(s);null!==t&&o.push(t)});for(const e of o){const o=this.entries.get(e);o&&(this.entries.delete(e),o())}}}register(e,o){const t="st-mount-"+this.nextId++;e.setAttribute(s,t),this.entries.set(t,o)}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear();for(const e of this.entries.values())e();this.entries.clear()}pruneRendererCaches(e){for(const o of this.cellRendererCache.keys())e.has(o)||this.cellRendererCache.delete(o);for(const o of this.headerRendererCache.keys())e.has(o)||this.headerRendererCache.delete(o)}get size(){return this.entries.size}}exports.SimpleTableComponent=class{constructor(){this.tableReady=new e.EventEmitter,this.instance=null,this.registry=new l,this.hostEl=e.inject(e.ElementRef),this.appRef=e.inject(e.ApplicationRef),this.envInjector=e.inject(e.EnvironmentInjector)}ngOnInit(){const e=this.hostEl.nativeElement.querySelector("div");if(!e)return;const t=this.getProps();this.instance=new o.SimpleTableVanilla(e,p(t,this.registry,this.appRef,this.envInjector)),this.instance.mount(),this.syncedDefaultHeaders=r(t),this.syncedRows=t.rows,this.tableReady.emit(this.instance.getAPI())}ngOnChanges(){if(!this.instance)return;const e=this.getProps(),t={...p(e,this.registry,this.appRef,this.envInjector)},n=r(e),i=o.headersStructurallyEqual(this.syncedDefaultHeaders,n);this.syncedDefaultHeaders=n,i&&delete t.columns;const s=o.rowsShallowUnchanged(this.syncedRows,e.rows,e.getRowId);this.syncedRows=e.rows,s&&delete t.rows,this.instance.update(t)}ngOnDestroy(){this.instance?.destroy(),this.instance=null,this.syncedDefaultHeaders=void 0,this.syncedRows=void 0,this.registry.clear()}getAPI(){return this.instance?.getAPI()??null}getProps(){const e={rows:this.rows};return void 0!==this.columns&&(e.columns=this.columns),void 0!==this.footerRenderer&&(e.footerRenderer=this.footerRenderer),void 0!==this.loadingStateRenderer&&(e.loadingStateRenderer=this.loadingStateRenderer),void 0!==this.errorStateRenderer&&(e.errorStateRenderer=this.errorStateRenderer),void 0!==this.emptyStateRenderer&&(e.emptyStateRenderer=this.emptyStateRenderer),void 0!==this.tableEmptyStateRenderer&&(e.tableEmptyStateRenderer=this.tableEmptyStateRenderer),void 0!==this.headerDropdown&&(e.headerDropdown=this.headerDropdown),void 0!==this.columnEditorConfig&&(e.columnEditorConfig=this.columnEditorConfig),void 0!==this.onCellClick&&(e.onCellClick=this.onCellClick),void 0!==this.onCellEdit&&(e.onCellEdit=this.onCellEdit),void 0!==this.onSortChange&&(e.onSortChange=this.onSortChange),void 0!==this.onFilterChange&&(e.onFilterChange=this.onFilterChange),void 0!==this.onRowSelectionChange&&(e.onRowSelectionChange=this.onRowSelectionChange),void 0!==this.onRowGroupExpand&&(e.onRowGroupExpand=this.onRowGroupExpand),void 0!==this.onColumnOrderChange&&(e.onColumnOrderChange=this.onColumnOrderChange),void 0!==this.onColumnVisibilityChange&&(e.onColumnVisibilityChange=this.onColumnVisibilityChange),void 0!==this.onColumnWidthChange&&(e.onColumnWidthChange=this.onColumnWidthChange),void 0!==this.onPageChange&&(e.onPageChange=this.onPageChange),void 0!==this.onLoadMore&&(e.onLoadMore=this.onLoadMore),void 0!==this.onTableReady&&(e.onTableReady=this.onTableReady),void 0!==this.rowGrouping&&(e.rowGrouping=this.rowGrouping),void 0!==this.pivot&&(e.pivot=this.pivot),void 0!==this.onPivotChange&&(e.onPivotChange=this.onPivotChange),void 0!==this.enableRowSelection&&(e.enableRowSelection=this.enableRowSelection),void 0!==this.theme&&(e.theme=this.theme),void 0!==this.quickFilter&&(e.quickFilter=this.quickFilter),void 0!==this.isLoading&&(e.isLoading=this.isLoading),void 0!==this.getRowId&&(e.getRowId=this.getRowId),void 0!==this.enablePagination&&(e.enablePagination=this.enablePagination),void 0!==this.rowsPerPage&&(e.rowsPerPage=this.rowsPerPage),void 0!==this.serverSidePagination&&(e.serverSidePagination=this.serverSidePagination),void 0!==this.totalRowCount&&(e.totalRowCount=this.totalRowCount),void 0!==this.height&&(e.height=this.height),void 0!==this.maxHeight&&(e.maxHeight=this.maxHeight),void 0!==this.scrollParent&&(e.scrollParent=this.scrollParent),void 0!==this.infiniteScrollThreshold&&(e.infiniteScrollThreshold=this.infiniteScrollThreshold),void 0!==this.columnResizing&&(e.columnResizing=this.columnResizing),void 0!==this.columnReordering&&(e.columnReordering=this.columnReordering),void 0!==this.enableColumnEditor&&(e.enableColumnEditor=this.enableColumnEditor),void 0!==this.enableColumnEditorInitOpen&&(e.enableColumnEditorInitOpen=this.enableColumnEditorInitOpen),void 0!==this.enableColumnEditorInitOpen&&(e.enableColumnEditorInitOpen=this.enableColumnEditorInitOpen),void 0!==this.selectableCells&&(e.selectableCells=this.selectableCells),void 0!==this.selectableColumns&&(e.selectableColumns=this.selectableColumns),void 0!==this.enableHeaderEditing&&(e.enableHeaderEditing=this.enableHeaderEditing),void 0!==this.onHeaderEdit&&(e.onHeaderEdit=this.onHeaderEdit),void 0!==this.customTheme&&(e.customTheme=this.customTheme),void 0!==this.icons&&(e.icons=this.icons),void 0!==this.externalFilterHandling&&(e.externalFilterHandling=this.externalFilterHandling),void 0!==this.externalSortHandling&&(e.externalSortHandling=this.externalSortHandling),void 0!==this.columnBorders&&(e.columnBorders=this.columnBorders),void 0!==this.rowButtons&&(e.rowButtons=this.rowButtons),void 0!==this.hideFooter&&(e.hideFooter=this.hideFooter),void 0!==this.footerPosition&&(e.footerPosition=this.footerPosition),void 0!==this.initialSortColumn&&(e.initialSortColumn=this.initialSortColumn),void 0!==this.initialSortDirection&&(e.initialSortDirection=this.initialSortDirection),void 0!==this.expandAll&&(e.expandAll=this.expandAll),void 0!==this.autoExpandColumns&&(e.autoExpandColumns=this.autoExpandColumns),void 0!==this.animations&&(e.animations=this.animations),void 0!==this.enableVirtualization&&(e.enableVirtualization=this.enableVirtualization),void 0!==this.hoverRowBackground&&(e.hoverRowBackground=this.hoverRowBackground),void 0!==this.hoverRowBackground&&(e.hoverRowBackground=this.hoverRowBackground),void 0!==this.oddColumnBackground&&(e.oddColumnBackground=this.oddColumnBackground),void 0!==this.oddColumnBackground&&(e.oddColumnBackground=this.oddColumnBackground),void 0!==this.oddEvenRowBackground&&(e.oddEvenRowBackground=this.oddEvenRowBackground),void 0!==this.oddEvenRowBackground&&(e.oddEvenRowBackground=this.oddEvenRowBackground),e}},t([e.Input({required:!0})],exports.SimpleTableComponent.prototype,"rows",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"columns",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"footerRenderer",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"loadingStateRenderer",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"errorStateRenderer",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"emptyStateRenderer",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"tableEmptyStateRenderer",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"headerDropdown",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"columnEditorConfig",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onCellClick",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onCellEdit",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onSortChange",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onFilterChange",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onRowSelectionChange",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onRowGroupExpand",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onColumnOrderChange",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onColumnVisibilityChange",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onColumnWidthChange",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onPageChange",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onLoadMore",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onTableReady",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"rowGrouping",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"pivot",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onPivotChange",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"enableRowSelection",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"theme",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"quickFilter",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"isLoading",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"getRowId",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"enablePagination",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"rowsPerPage",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"serverSidePagination",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"totalRowCount",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"height",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"maxHeight",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"scrollParent",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"infiniteScrollThreshold",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"columnResizing",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"columnReordering",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"enableColumnEditor",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"enableColumnEditorInitOpen",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"selectableCells",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"selectableColumns",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"enableHeaderEditing",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"onHeaderEdit",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"customTheme",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"icons",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"externalFilterHandling",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"externalSortHandling",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"columnBorders",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"rowButtons",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"hideFooter",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"footerPosition",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"initialSortColumn",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"initialSortDirection",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"expandAll",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"autoExpandColumns",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"animations",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"enableVirtualization",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"hoverRowBackground",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"oddColumnBackground",void 0),t([e.Input()],exports.SimpleTableComponent.prototype,"oddEvenRowBackground",void 0),t([e.Output()],exports.SimpleTableComponent.prototype,"tableReady",void 0),exports.SimpleTableComponent=t([e.Component({selector:"simple-table",standalone:!0,template:"<div #host></div>",styles:[":host { display: block; }"]})],exports.SimpleTableComponent),Object.defineProperty(exports,"PIVOT_ACCESSOR_PREFIX",{enumerable:!0,get:function(){return o.PIVOT_ACCESSOR_PREFIX}}),Object.defineProperty(exports,"PIVOT_BLANK_LABEL",{enumerable:!0,get:function(){return o.PIVOT_BLANK_LABEL}}),Object.defineProperty(exports,"PIVOT_CHILDREN_KEY",{enumerable:!0,get:function(){return o.PIVOT_CHILDREN_KEY}}),Object.defineProperty(exports,"PIVOT_IS_TOTAL_KEY",{enumerable:!0,get:function(){return o.PIVOT_IS_TOTAL_KEY}}),Object.defineProperty(exports,"asRows",{enumerable:!0,get:function(){return o.asRows}}),Object.defineProperty(exports,"buildPivotAccessor",{enumerable:!0,get:function(){return o.buildPivotAccessor}}),Object.defineProperty(exports,"buildPivotRowTotalAccessor",{enumerable:!0,get:function(){return o.buildPivotRowTotalAccessor}}),Object.defineProperty(exports,"pivotRows",{enumerable:!0,get:function(){return o.pivotRows}}),exports.provideSimpleTable=function(){return e.makeEnvironmentProviders([])},exports.wrapAngularRenderer=n;
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/index.es.js DELETED
@@ -1,2 +0,0 @@
1
- import{createComponent as e,Input as o,Output as t,Component as i,EventEmitter as n,inject as r,ElementRef as d,ApplicationRef as s,EnvironmentInjector as a,makeEnvironmentProviders as l}from"@angular/core";import{collectHeaderAccessors as h,asRows as c,SimpleTableVanilla as p,headersStructurallyEqual as u,rowsShallowUnchanged as v}from"simple-table-core";export{PIVOT_ACCESSOR_PREFIX,PIVOT_BLANK_LABEL,PIVOT_CHILDREN_KEY,PIVOT_IS_TOTAL_KEY,asRows,buildPivotAccessor,buildPivotRowTotalAccessor,pivotRows}from"simple-table-core";function g(e,o,t,i){var n,r=arguments.length,d=r<3?o:null===i?i=Object.getOwnPropertyDescriptor(o,t):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)d=Reflect.decorate(e,o,t,i);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(d=(r<3?n(d):r>3?n(o,t,d):n(o,t))||d);return r>3&&d&&Object.defineProperty(o,t,d),d}function m(o,t,i,n){return r=>{const d=document.createElement("div"),s=e(o,{environmentInjector:i,hostElement:d});return Object.assign(s.instance,r),t.attachView(s.hostView),s.changeDetectorRef.detectChanges(),n?.register(d,()=>{t.detachView(s.hostView),s.destroy()}),d}}function C(o,t,i,n,r,d){const s="cell"===d?n.cellRendererCache:n.headerRendererCache,a=s.get(r);if(a)return a.component=o,a.wrapped;const l={component:o,wrapped:null},h=o=>{const r=document.createElement("div"),d=e(l.component,{environmentInjector:i,hostElement:r});return Object.assign(d.instance,o),t.attachView(d.hostView),d.changeDetectorRef.detectChanges(),n.register(r,()=>{t.detachView(d.hostView),d.destroy()}),r};return l.wrapped=h,s.set(r,l),h}function R(e){const o=e.columns;if(!o)throw new Error("SimpleTable requires `columns`");return o}function y(e,o,t,i){const{columns:n,rows:r,footerRenderer:d,emptyStateRenderer:s,errorStateRenderer:a,loadingStateRenderer:l,tableEmptyStateRenderer:p,headerDropdown:u,columnEditorConfig:v,icons:g,rowButtons:w,onColumnOrderChange:b,onColumnWidthChange:E,onHeaderEdit:f,onColumnSelect:S,enableColumnEditor:P,enableColumnEditorInitOpen:B,enablePagination:k,onTableReady:I,hoverRowBackground:H,oddColumnBackground:O,oddEvenRowBackground:x,...T}=e,V=e=>m(e,t,i,o),D=R(e);o.pruneRendererCaches(h(D));const A={...T,rows:c(r),columns:D.map(function e(n){const{cellRenderer:r,headerRenderer:d,children:s,nestedTable:a,...l}=n,h=String(n.accessor),c={...l};if(r&&(c.cellRenderer=r.ɵcmp?C(r,t,i,o,h,"cell"):r),d&&(c.headerRenderer=d.ɵcmp?C(d,t,i,o,h,"header"):d),s&&(c.children=s.map(e)),a){const e={...a,rows:[]};c.nestedTable=y(e,o,t,i)}return c}),enableColumnEditor:P,enableColumnEditorInitOpen:B,enablePagination:k,onTableReady:I,hoverRowBackground:H,oddColumnBackground:O,oddEvenRowBackground:x,onRendererHostDiscard:o.disposeHost};return b&&(A.onColumnOrderChange=e=>b(e)),E&&(A.onColumnWidthChange=e=>E(e)),f&&(A.onHeaderEdit=(e,o)=>f(e,o)),S&&(A.onColumnSelect=e=>S(e)),void 0!==d&&(A.footerRenderer=d.ɵcmp?V(d):d),void 0!==s&&(A.emptyStateRenderer=s.ɵcmp?V(s):s),void 0!==a&&(A.errorStateRenderer=a.ɵcmp?V(a):a),void 0!==l&&(A.loadingStateRenderer=l.ɵcmp?V(l):l),void 0!==p&&(A.tableEmptyStateRenderer=p),void 0!==u&&(A.headerDropdown=V(u)),void 0!==v&&(A.columnEditorConfig=function(e){const{rowRenderer:o,customRenderer:t,...i}=e;return{...i,...o?{rowRenderer:V(o)}:{},...t?{customRenderer:V(t)}:{}}}(v)),void 0!==g&&(A.icons=function(e){const o={};for(const[t,i]of Object.entries(e))null!=i&&(o[t]="string"==typeof i||i instanceof HTMLElement||i instanceof SVGSVGElement?i:i.ɵcmp?V(i)({}):i);return o}(g)),void 0!==w&&(A.rowButtons=w.map(e=>V(e))),A}"function"==typeof SuppressedError&&SuppressedError;const w="data-st-mount-id";class b{constructor(){this.entries=new Map,this.nextId=0,this.cellRendererCache=new Map,this.headerRendererCache=new Map,this.disposeHost=e=>{if("function"!=typeof e.getAttribute)return;const o=[],t=e.getAttribute(w);null!==t&&o.push(t),e.querySelectorAll(`[${w}]`).forEach(e=>{const t=e.getAttribute(w);null!==t&&o.push(t)});for(const e of o){const o=this.entries.get(e);o&&(this.entries.delete(e),o())}}}register(e,o){const t="st-mount-"+this.nextId++;e.setAttribute(w,t),this.entries.set(t,o)}clear(){this.cellRendererCache.clear(),this.headerRendererCache.clear();for(const e of this.entries.values())e();this.entries.clear()}pruneRendererCaches(e){for(const o of this.cellRendererCache.keys())e.has(o)||this.cellRendererCache.delete(o);for(const o of this.headerRendererCache.keys())e.has(o)||this.headerRendererCache.delete(o)}get size(){return this.entries.size}}let E=class{constructor(){this.tableReady=new n,this.instance=null,this.registry=new b,this.hostEl=r(d),this.appRef=r(s),this.envInjector=r(a)}ngOnInit(){const e=this.hostEl.nativeElement.querySelector("div");if(!e)return;const o=this.getProps();this.instance=new p(e,y(o,this.registry,this.appRef,this.envInjector)),this.instance.mount(),this.syncedDefaultHeaders=R(o),this.syncedRows=o.rows,this.tableReady.emit(this.instance.getAPI())}ngOnChanges(){if(!this.instance)return;const e=this.getProps(),o={...y(e,this.registry,this.appRef,this.envInjector)},t=R(e),i=u(this.syncedDefaultHeaders,t);this.syncedDefaultHeaders=t,i&&delete o.columns;const n=v(this.syncedRows,e.rows,e.getRowId);this.syncedRows=e.rows,n&&delete o.rows,this.instance.update(o)}ngOnDestroy(){this.instance?.destroy(),this.instance=null,this.syncedDefaultHeaders=void 0,this.syncedRows=void 0,this.registry.clear()}getAPI(){return this.instance?.getAPI()??null}getProps(){const e={rows:this.rows};return void 0!==this.columns&&(e.columns=this.columns),void 0!==this.footerRenderer&&(e.footerRenderer=this.footerRenderer),void 0!==this.loadingStateRenderer&&(e.loadingStateRenderer=this.loadingStateRenderer),void 0!==this.errorStateRenderer&&(e.errorStateRenderer=this.errorStateRenderer),void 0!==this.emptyStateRenderer&&(e.emptyStateRenderer=this.emptyStateRenderer),void 0!==this.tableEmptyStateRenderer&&(e.tableEmptyStateRenderer=this.tableEmptyStateRenderer),void 0!==this.headerDropdown&&(e.headerDropdown=this.headerDropdown),void 0!==this.columnEditorConfig&&(e.columnEditorConfig=this.columnEditorConfig),void 0!==this.onCellClick&&(e.onCellClick=this.onCellClick),void 0!==this.onCellEdit&&(e.onCellEdit=this.onCellEdit),void 0!==this.onSortChange&&(e.onSortChange=this.onSortChange),void 0!==this.onFilterChange&&(e.onFilterChange=this.onFilterChange),void 0!==this.onRowSelectionChange&&(e.onRowSelectionChange=this.onRowSelectionChange),void 0!==this.onRowGroupExpand&&(e.onRowGroupExpand=this.onRowGroupExpand),void 0!==this.onColumnOrderChange&&(e.onColumnOrderChange=this.onColumnOrderChange),void 0!==this.onColumnVisibilityChange&&(e.onColumnVisibilityChange=this.onColumnVisibilityChange),void 0!==this.onColumnWidthChange&&(e.onColumnWidthChange=this.onColumnWidthChange),void 0!==this.onPageChange&&(e.onPageChange=this.onPageChange),void 0!==this.onLoadMore&&(e.onLoadMore=this.onLoadMore),void 0!==this.onTableReady&&(e.onTableReady=this.onTableReady),void 0!==this.rowGrouping&&(e.rowGrouping=this.rowGrouping),void 0!==this.pivot&&(e.pivot=this.pivot),void 0!==this.onPivotChange&&(e.onPivotChange=this.onPivotChange),void 0!==this.enableRowSelection&&(e.enableRowSelection=this.enableRowSelection),void 0!==this.theme&&(e.theme=this.theme),void 0!==this.quickFilter&&(e.quickFilter=this.quickFilter),void 0!==this.isLoading&&(e.isLoading=this.isLoading),void 0!==this.getRowId&&(e.getRowId=this.getRowId),void 0!==this.enablePagination&&(e.enablePagination=this.enablePagination),void 0!==this.rowsPerPage&&(e.rowsPerPage=this.rowsPerPage),void 0!==this.serverSidePagination&&(e.serverSidePagination=this.serverSidePagination),void 0!==this.totalRowCount&&(e.totalRowCount=this.totalRowCount),void 0!==this.height&&(e.height=this.height),void 0!==this.maxHeight&&(e.maxHeight=this.maxHeight),void 0!==this.scrollParent&&(e.scrollParent=this.scrollParent),void 0!==this.infiniteScrollThreshold&&(e.infiniteScrollThreshold=this.infiniteScrollThreshold),void 0!==this.columnResizing&&(e.columnResizing=this.columnResizing),void 0!==this.columnReordering&&(e.columnReordering=this.columnReordering),void 0!==this.enableColumnEditor&&(e.enableColumnEditor=this.enableColumnEditor),void 0!==this.enableColumnEditorInitOpen&&(e.enableColumnEditorInitOpen=this.enableColumnEditorInitOpen),void 0!==this.enableColumnEditorInitOpen&&(e.enableColumnEditorInitOpen=this.enableColumnEditorInitOpen),void 0!==this.selectableCells&&(e.selectableCells=this.selectableCells),void 0!==this.selectableColumns&&(e.selectableColumns=this.selectableColumns),void 0!==this.enableHeaderEditing&&(e.enableHeaderEditing=this.enableHeaderEditing),void 0!==this.onHeaderEdit&&(e.onHeaderEdit=this.onHeaderEdit),void 0!==this.customTheme&&(e.customTheme=this.customTheme),void 0!==this.icons&&(e.icons=this.icons),void 0!==this.externalFilterHandling&&(e.externalFilterHandling=this.externalFilterHandling),void 0!==this.externalSortHandling&&(e.externalSortHandling=this.externalSortHandling),void 0!==this.columnBorders&&(e.columnBorders=this.columnBorders),void 0!==this.rowButtons&&(e.rowButtons=this.rowButtons),void 0!==this.hideFooter&&(e.hideFooter=this.hideFooter),void 0!==this.footerPosition&&(e.footerPosition=this.footerPosition),void 0!==this.initialSortColumn&&(e.initialSortColumn=this.initialSortColumn),void 0!==this.initialSortDirection&&(e.initialSortDirection=this.initialSortDirection),void 0!==this.expandAll&&(e.expandAll=this.expandAll),void 0!==this.autoExpandColumns&&(e.autoExpandColumns=this.autoExpandColumns),void 0!==this.animations&&(e.animations=this.animations),void 0!==this.enableVirtualization&&(e.enableVirtualization=this.enableVirtualization),void 0!==this.hoverRowBackground&&(e.hoverRowBackground=this.hoverRowBackground),void 0!==this.hoverRowBackground&&(e.hoverRowBackground=this.hoverRowBackground),void 0!==this.oddColumnBackground&&(e.oddColumnBackground=this.oddColumnBackground),void 0!==this.oddColumnBackground&&(e.oddColumnBackground=this.oddColumnBackground),void 0!==this.oddEvenRowBackground&&(e.oddEvenRowBackground=this.oddEvenRowBackground),void 0!==this.oddEvenRowBackground&&(e.oddEvenRowBackground=this.oddEvenRowBackground),e}};function f(){return l([])}g([o({required:!0})],E.prototype,"rows",void 0),g([o()],E.prototype,"columns",void 0),g([o()],E.prototype,"footerRenderer",void 0),g([o()],E.prototype,"loadingStateRenderer",void 0),g([o()],E.prototype,"errorStateRenderer",void 0),g([o()],E.prototype,"emptyStateRenderer",void 0),g([o()],E.prototype,"tableEmptyStateRenderer",void 0),g([o()],E.prototype,"headerDropdown",void 0),g([o()],E.prototype,"columnEditorConfig",void 0),g([o()],E.prototype,"onCellClick",void 0),g([o()],E.prototype,"onCellEdit",void 0),g([o()],E.prototype,"onSortChange",void 0),g([o()],E.prototype,"onFilterChange",void 0),g([o()],E.prototype,"onRowSelectionChange",void 0),g([o()],E.prototype,"onRowGroupExpand",void 0),g([o()],E.prototype,"onColumnOrderChange",void 0),g([o()],E.prototype,"onColumnVisibilityChange",void 0),g([o()],E.prototype,"onColumnWidthChange",void 0),g([o()],E.prototype,"onPageChange",void 0),g([o()],E.prototype,"onLoadMore",void 0),g([o()],E.prototype,"onTableReady",void 0),g([o()],E.prototype,"rowGrouping",void 0),g([o()],E.prototype,"pivot",void 0),g([o()],E.prototype,"onPivotChange",void 0),g([o()],E.prototype,"enableRowSelection",void 0),g([o()],E.prototype,"theme",void 0),g([o()],E.prototype,"quickFilter",void 0),g([o()],E.prototype,"isLoading",void 0),g([o()],E.prototype,"getRowId",void 0),g([o()],E.prototype,"enablePagination",void 0),g([o()],E.prototype,"rowsPerPage",void 0),g([o()],E.prototype,"serverSidePagination",void 0),g([o()],E.prototype,"totalRowCount",void 0),g([o()],E.prototype,"height",void 0),g([o()],E.prototype,"maxHeight",void 0),g([o()],E.prototype,"scrollParent",void 0),g([o()],E.prototype,"infiniteScrollThreshold",void 0),g([o()],E.prototype,"columnResizing",void 0),g([o()],E.prototype,"columnReordering",void 0),g([o()],E.prototype,"enableColumnEditor",void 0),g([o()],E.prototype,"enableColumnEditorInitOpen",void 0),g([o()],E.prototype,"selectableCells",void 0),g([o()],E.prototype,"selectableColumns",void 0),g([o()],E.prototype,"enableHeaderEditing",void 0),g([o()],E.prototype,"onHeaderEdit",void 0),g([o()],E.prototype,"customTheme",void 0),g([o()],E.prototype,"icons",void 0),g([o()],E.prototype,"externalFilterHandling",void 0),g([o()],E.prototype,"externalSortHandling",void 0),g([o()],E.prototype,"columnBorders",void 0),g([o()],E.prototype,"rowButtons",void 0),g([o()],E.prototype,"hideFooter",void 0),g([o()],E.prototype,"footerPosition",void 0),g([o()],E.prototype,"initialSortColumn",void 0),g([o()],E.prototype,"initialSortDirection",void 0),g([o()],E.prototype,"expandAll",void 0),g([o()],E.prototype,"autoExpandColumns",void 0),g([o()],E.prototype,"animations",void 0),g([o()],E.prototype,"enableVirtualization",void 0),g([o()],E.prototype,"hoverRowBackground",void 0),g([o()],E.prototype,"oddColumnBackground",void 0),g([o()],E.prototype,"oddEvenRowBackground",void 0),g([t()],E.prototype,"tableReady",void 0),E=g([i({selector:"simple-table",standalone:!0,template:"<div #host></div>",styles:[":host { display: block; }"]})],E);export{E as SimpleTableComponent,f as provideSimpleTable,m as wrapAngularRenderer};
2
- //# sourceMappingURL=index.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- export type CachedRendererSlot<T = unknown> = {
2
- component: T;
3
- wrapped: unknown;
4
- };
5
- export declare class MountRegistry {
6
- private entries;
7
- private nextId;
8
- readonly cellRendererCache: Map<string, CachedRendererSlot<unknown>>;
9
- readonly headerRendererCache: Map<string, CachedRendererSlot<unknown>>;
10
- register(container: HTMLElement, dispose: () => void): void;
11
- disposeHost: (host: HTMLElement) => void;
12
- clear(): void;
13
- pruneRendererCaches(liveAccessors: ReadonlySet<string>): void;
14
- get size(): number;
15
- }
@@ -1,7 +0,0 @@
1
- import type { ApplicationRef, EnvironmentInjector } from "@angular/core";
2
- import type { SimpleTableConfig } from "simple-table-core";
3
- import type { SimpleTableAngularProps, AngularColumnDef, AngularDefaultRowData } from "./types";
4
- import type { MountRegistry } from "./MountRegistry";
5
- /** Resolve column definitions. */
6
- export declare function resolveAngularColumns<TData extends AngularDefaultRowData = AngularDefaultRowData>(config: Pick<SimpleTableAngularProps<TData>, "columns">): ReadonlyArray<AngularColumnDef<TData, any>>;
7
- export declare function buildVanillaConfig<TData extends AngularDefaultRowData = AngularDefaultRowData>(config: SimpleTableAngularProps<TData>, registry: MountRegistry, appRef: ApplicationRef, injector: EnvironmentInjector): SimpleTableConfig;