@tanstack/angular-table 9.0.0-alpha.8 → 9.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -0
- package/dist/README.md +127 -0
- package/dist/fesm2022/tanstack-angular-table-static-functions.mjs +6 -0
- package/dist/fesm2022/tanstack-angular-table-static-functions.mjs.map +1 -0
- package/dist/fesm2022/tanstack-angular-table.mjs +1337 -242
- package/dist/fesm2022/tanstack-angular-table.mjs.map +1 -1
- package/dist/types/tanstack-angular-table-static-functions.d.ts +1 -0
- package/dist/types/tanstack-angular-table.d.ts +793 -0
- package/package.json +39 -19
- package/skills/angular/angular-rendering-directives/SKILL.md +415 -0
- package/skills/angular/angular-rendering-directives/references/content-shapes.md +142 -0
- package/skills/angular/angular-rendering-directives/references/create-table-hook-registries.md +89 -0
- package/skills/angular/angular-rendering-directives/references/di-tokens.md +171 -0
- package/skills/angular/angular-rendering-directives/references/flex-render-component-options.md +64 -0
- package/skills/angular/client-to-server/SKILL.md +467 -0
- package/skills/angular/compose-with-tanstack-query/SKILL.md +482 -0
- package/skills/angular/compose-with-tanstack-store/SKILL.md +397 -0
- package/skills/angular/compose-with-tanstack-virtual/SKILL.md +400 -0
- package/skills/angular/getting-started/SKILL.md +496 -0
- package/skills/angular/getting-started/references/feature-row-model-mapping.md +48 -0
- package/skills/angular/migrate-v8-to-v9/SKILL.md +419 -0
- package/skills/angular/migrate-v8-to-v9/references/v8-to-v9-mapping.md +261 -0
- package/skills/angular/production-readiness/SKILL.md +469 -0
- package/skills/angular/table-state/SKILL.md +429 -0
- package/skills/angular/table-state/references/external-atoms-and-app-hook.md +152 -0
- package/src/flex-render/context.ts +14 -0
- package/src/flex-render/flags.ts +34 -0
- package/src/flex-render/flexRenderComponent.ts +288 -0
- package/src/flex-render/flexRenderComponentFactory.ts +251 -0
- package/src/flex-render/renderer.ts +393 -0
- package/src/flex-render/view.ts +226 -0
- package/src/flexRender.ts +124 -0
- package/src/helpers/cell.ts +104 -0
- package/src/helpers/createTableHook.ts +499 -0
- package/src/helpers/flexRenderCell.ts +136 -0
- package/src/helpers/header.ts +99 -0
- package/src/helpers/table.ts +85 -0
- package/src/index.ts +23 -70
- package/src/injectTable.ts +212 -0
- package/src/{lazy-signal-initializer.ts → lazySignalInitializer.ts} +2 -2
- package/src/reactivity.ts +105 -0
- package/static-functions/index.ts +1 -0
- package/static-functions/ng-package.json +6 -0
- package/dist/esm2022/flex-render.mjs +0 -150
- package/dist/esm2022/index.mjs +0 -48
- package/dist/esm2022/lazy-signal-initializer.mjs +0 -43
- package/dist/esm2022/proxy.mjs +0 -83
- package/dist/esm2022/tanstack-angular-table.mjs +0 -5
- package/dist/flex-render.d.ts +0 -31
- package/dist/index.d.ts +0 -5
- package/dist/lazy-signal-initializer.d.ts +0 -5
- package/dist/proxy.d.ts +0 -3
- package/src/flex-render.ts +0 -187
- package/src/proxy.ts +0 -97
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tanstack-angular-table.mjs","sources":["../../src/lazy-signal-initializer.ts","../../src/proxy.ts","../../src/flex-render.ts","../../src/index.ts","../../src/tanstack-angular-table.ts"],"sourcesContent":["import { untracked } from '@angular/core'\n\n/**\n * Implementation from @tanstack/angular-query\n * {@link https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/util/lazy-init/lazy-init.ts}\n */\nexport function lazyInit<T extends object>(initializer: () => T): T {\n let object: T | null = null\n\n const initializeObject = () => {\n if (!object) {\n object = untracked(() => initializer())\n }\n }\n\n queueMicrotask(() => initializeObject())\n\n const table = () => {}\n\n return new Proxy<T>(table as T, {\n apply(target: T, thisArg: any, argArray: any[]): any {\n initializeObject()\n if (typeof object === 'function') {\n return Reflect.apply(object, thisArg, argArray)\n }\n return Reflect.apply(target as any, thisArg, argArray)\n },\n get(_, prop, receiver) {\n initializeObject()\n return Reflect.get(object as T, prop, receiver)\n },\n has(_, prop) {\n initializeObject()\n return Reflect.has(object as T, prop)\n },\n ownKeys() {\n initializeObject()\n return Reflect.ownKeys(object as T)\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n })\n}\n","import { computed, type Signal, untracked } from '@angular/core'\nimport { type Table } from '@tanstack/table-core'\n\ntype TableSignal<T> = Table<T> & Signal<Table<T>>\n\nexport function proxifyTable<T>(\n tableSignal: Signal<Table<T>>\n): Table<T> & Signal<Table<T>> {\n const internalState = tableSignal as TableSignal<T>\n\n return new Proxy(internalState, {\n apply() {\n return tableSignal()\n },\n get(target, property: keyof Table<T>): any {\n if (target[property]) {\n return target[property]\n }\n const table = untracked(tableSignal)\n /**\n * Attempt to convert all accessors into computed ones,\n * excluding handlers as they do not retain any reactive value\n */\n if (\n property.startsWith('get') &&\n !property.endsWith('Handler') &&\n !property.endsWith('Model')\n ) {\n const maybeFn = table[property] as Function | never\n if (typeof maybeFn === 'function') {\n Object.defineProperty(target, property, {\n value: toComputed(tableSignal, maybeFn),\n configurable: true,\n enumerable: true,\n })\n return target[property]\n }\n }\n // @ts-expect-error\n return (target[property] = table[property])\n },\n has(_, prop: keyof Table<T>) {\n return !!untracked(tableSignal)[prop]\n },\n ownKeys() {\n return Reflect.ownKeys(untracked(tableSignal))\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n })\n}\n\n/**\n * Here we'll handle all type of accessors:\n * - 0 argument -> e.g. table.getCanNextPage())\n * - 0~1 arguments -> e.g. table.getIsSomeRowsPinned(position?)\n * - 1 required argument -> e.g. table.getColumn(columnId)\n * - 1+ argument -> e.g. table.getRow(id, searchAll?)\n *\n * Since we are not able to detect automatically the accessors parameters,\n * we'll wrap all accessors into a cached function wrapping a computed\n * that return it's value based on the given parameters\n */\nfunction toComputed<T>(signal: Signal<Table<T>>, fn: Function) {\n const hasArgs = fn.length > 0\n if (!hasArgs) {\n return computed(() => {\n void signal()\n return fn()\n })\n }\n\n const computedCache: Record<string, Signal<unknown>> = {}\n\n return (...argsArray: any[]) => {\n const serializedArgs = serializeArgs(...argsArray)\n if (computedCache.hasOwnProperty(serializedArgs)) {\n return computedCache[serializedArgs]?.()\n }\n const computedSignal = computed(() => {\n void signal()\n return fn(...argsArray)\n })\n\n computedCache[serializedArgs] = computedSignal\n\n return computedSignal()\n }\n}\n\nfunction serializeArgs(...args: any[]) {\n return JSON.stringify(args)\n}\n","import {\n ChangeDetectorRef,\n ComponentRef,\n Directive,\n EmbeddedViewRef,\n Inject,\n InjectionToken,\n Injector,\n Input,\n TemplateRef,\n Type,\n ViewContainerRef,\n inject,\n isSignal,\n type DoCheck,\n type OnInit,\n} from '@angular/core'\n\nexport type FlexRenderContent<TProps extends NonNullable<unknown>> =\n | string\n | number\n | Type<TProps>\n | FlexRenderComponent<TProps>\n | TemplateRef<{ $implicit: TProps }>\n | null\n | undefined\n\n@Directive({\n selector: '[flexRender]',\n standalone: true,\n})\nexport class FlexRenderDirective<TProps extends NonNullable<unknown>>\n implements OnInit, DoCheck\n{\n @Input({ required: true, alias: 'flexRender' })\n content:\n | number\n | string\n | ((props: TProps) => FlexRenderContent<TProps>)\n | undefined = undefined\n\n @Input({ required: true, alias: 'flexRenderProps' })\n props: TProps = {} as TProps\n\n @Input({ required: false, alias: 'flexRenderInjector' })\n injector: Injector = inject(Injector)\n\n constructor(\n @Inject(ViewContainerRef)\n private readonly viewContainerRef: ViewContainerRef,\n @Inject(TemplateRef)\n private readonly templateRef: TemplateRef<any>\n ) {}\n\n ref?: ComponentRef<unknown> | EmbeddedViewRef<unknown> | null = null\n\n ngOnInit(): void {\n this.ref = this.render()\n }\n\n ngDoCheck() {\n if (this.ref instanceof ComponentRef) {\n this.ref.injector.get(ChangeDetectorRef).markForCheck()\n } else if (this.ref instanceof EmbeddedViewRef) {\n this.ref.markForCheck()\n }\n }\n\n render() {\n this.viewContainerRef.clear()\n const { content, props } = this\n if (!this.content) {\n return null\n }\n\n if (typeof content === 'string' || typeof content === 'number') {\n return this.renderStringContent()\n }\n if (typeof content === 'function') {\n return this.renderContent(content(props))\n }\n return null\n }\n\n private renderContent(content: FlexRenderContent<TProps>) {\n if (typeof content === 'string' || typeof content === 'number') {\n return this.renderStringContent()\n }\n if (content instanceof TemplateRef) {\n return this.viewContainerRef.createEmbeddedView(\n content,\n this.getTemplateRefContext()\n )\n } else if (content instanceof FlexRenderComponent) {\n return this.renderComponent(content)\n } else if (content instanceof Type) {\n return this.renderCustomComponent(content)\n } else {\n return null\n }\n }\n\n private renderStringContent(): EmbeddedViewRef<unknown> {\n const context = () => {\n return typeof this.content === 'string' ||\n typeof this.content === 'number'\n ? this.content\n : this.content?.(this.props)\n }\n return this.viewContainerRef.createEmbeddedView(this.templateRef, {\n get $implicit() {\n return context()\n },\n })\n }\n\n private renderComponent(\n flexRenderComponent: FlexRenderComponent<TProps>\n ): ComponentRef<unknown> {\n const { component, inputs, injector } = flexRenderComponent\n\n const getContext = () => this.props\n\n const proxy = new Proxy(this.props, {\n get: (_, key) => getContext()?.[key as keyof typeof _],\n })\n\n const componentInjector = Injector.create({\n parent: injector ?? this.injector,\n providers: [{ provide: FlexRenderComponentProps, useValue: proxy }],\n })\n\n const componentRef = this.viewContainerRef.createComponent(component, {\n injector: componentInjector,\n })\n for (const prop in inputs) {\n if (componentRef.instance?.hasOwnProperty(prop)) {\n componentRef.setInput(prop, inputs[prop])\n }\n }\n return componentRef\n }\n\n private renderCustomComponent(\n component: Type<unknown>\n ): ComponentRef<unknown> {\n const componentRef = this.viewContainerRef.createComponent(component, {\n injector: this.injector,\n })\n for (const prop in this.props) {\n // Only signal based input can be added here\n if (\n componentRef.instance?.hasOwnProperty(prop) &&\n // @ts-ignore\n isSignal(componentRef.instance[prop])\n ) {\n componentRef.setInput(prop, this.props[prop])\n }\n }\n return componentRef\n }\n\n private getTemplateRefContext() {\n const getContext = () => this.props\n return {\n get $implicit() {\n return getContext()\n },\n }\n }\n}\n\nexport class FlexRenderComponent<T extends NonNullable<unknown>> {\n constructor(\n readonly component: Type<unknown>,\n readonly inputs: T = {} as T,\n readonly injector?: Injector\n ) {}\n}\n\nconst FlexRenderComponentProps = new InjectionToken<NonNullable<unknown>>(\n '[@tanstack/angular-table] Flex render component context props'\n)\n\nexport function injectFlexRenderContext<T extends NonNullable<unknown>>(): T {\n return inject<T>(FlexRenderComponentProps)\n}\n","import { computed, type Signal, signal } from '@angular/core'\nimport {\n RowData,\n TableOptions,\n TableOptionsResolved,\n TableState,\n _createTable,\n type Table,\n} from '@tanstack/table-core'\nimport { lazyInit } from './lazy-signal-initializer'\nimport { proxifyTable } from './proxy'\n\nexport * from '@tanstack/table-core'\n\nexport {\n type FlexRenderContent,\n FlexRenderComponent,\n FlexRenderDirective,\n injectFlexRenderContext,\n} from './flex-render'\n\nexport function injectTable<TData extends RowData>(\n options: () => TableOptions<TData>\n): Table<TData> & Signal<Table<TData>> {\n return lazyInit(() => {\n const resolvedOptions = {\n state: {},\n onStateChange: () => {},\n renderFallbackValue: null,\n ...options(),\n }\n\n const table = _createTable(resolvedOptions)\n\n // By default, manage table state here using the table's initial state\n const state = signal<TableState>(table.initialState)\n\n // Compose table options using computed.\n // This is to allow `tableSignal` to listen and set table option\n const updatedOptions = computed<TableOptionsResolved<TData>>(() => {\n // listen to table state changed\n const tableState = state()\n // listen to input options changed\n const tableOptions = options()\n return {\n ...table.options,\n ...resolvedOptions,\n ...tableOptions,\n state: { ...tableState, ...tableOptions.state },\n onStateChange: updater => {\n const value =\n updater instanceof Function ? updater(tableState) : updater\n state.set(value)\n resolvedOptions.onStateChange?.(updater)\n },\n }\n })\n\n // convert table instance to signal for proxify to listen to any table state and options changes\n const tableSignal = computed(\n () => {\n table.setOptions(updatedOptions())\n return table\n },\n {\n equal: () => false,\n }\n )\n\n // proxify Table instance to provide ability for consumer to listen to any table state changes\n return proxifyTable(tableSignal)\n })\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tanstack-angular-table.mjs","sources":["../../src/helpers/cell.ts","../../src/helpers/header.ts","../../src/helpers/table.ts","../../src/flex-render/context.ts","../../src/flex-render/flags.ts","../../src/flex-render/flexRenderComponent.ts","../../src/flex-render/flexRenderComponentFactory.ts","../../src/flex-render/view.ts","../../src/flex-render/renderer.ts","../../src/helpers/flexRenderCell.ts","../../src/flexRender.ts","../../src/lazySignalInitializer.ts","../../src/reactivity.ts","../../src/injectTable.ts","../../src/helpers/createTableHook.ts","../../src/index.ts","../../src/tanstack-angular-table.ts"],"sourcesContent":["import { Directive, InjectionToken, inject, input } from '@angular/core'\nimport { Cell, CellData, RowData, TableFeatures } from '@tanstack/table-core'\nimport type { Signal } from '@angular/core'\n\n/**\n * DI context shape for a TanStack Table cell.\n *\n * This exists to make the current `Cell` injectable by any nested component/directive\n * without having to pass it through inputs/props manually.\n */\nexport interface TanStackTableCellContext<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData,\n> {\n /** Signal that returns the current cell instance. */\n cell: Signal<Cell<TFeatures, TData, TValue>>\n}\n\n/**\n * Injection token that provides access to the current cell.\n *\n * This token is provided by the {@link TanStackTableCell} directive.\n */\nexport const TanStackTableCellToken = new InjectionToken<\n TanStackTableCellContext<any, any, any>['cell']\n>('[TanStack Table] CellContext')\n\n/**\n * Provides a TanStack Table `Cell` instance in Angular DI.\n *\n * The cell can be injected by:\n * - any descendant of an element using `[tanStackTableCell]=\"...\"`\n * - any component instantiated by `*flexRender` when the render props contains `cell`\n *\n * @example\n * Inject from the nearest `[tanStackTableCell]`:\n * ```html\n * <td [tanStackTableCell]=\"cell\">\n * <app-cell-actions />\n * </td>\n * ```\n *\n * ```ts\n * @Component({\n * selector: 'app-cell-actions',\n * template: `{{ cell().id }}`,\n * })\n * export class CellActionsComponent {\n * readonly cell = injectTableCellContext()\n * }\n * ```\n *\n * @example\n * Inject inside a component rendered via `flexRender`:\n * ```ts\n * @Component({\n * selector: 'app-price-cell',\n * template: `{{ cell().getValue() }}`,\n * })\n * export class PriceCellComponent {\n * readonly cell = injectTableCellContext()\n * }\n * ```\n */\n@Directive({\n selector: '[tanStackTableCell]',\n exportAs: 'cell',\n providers: [\n {\n provide: TanStackTableCellToken,\n useFactory: () => inject(TanStackTableCell).cell,\n },\n ],\n})\nexport class TanStackTableCell<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData,\n> implements TanStackTableCellContext<TFeatures, TData, TValue> {\n /**\n * The current TanStack Table cell.\n *\n * Provided as a required signal input so DI consumers always read the latest value.\n */\n readonly cell = input.required<Cell<TFeatures, TData, TValue>>({\n alias: 'tanStackTableCell',\n })\n}\n\n/**\n * Injects the current TanStack Table cell signal.\n *\n * Available when:\n * - there is a nearest `[tanStackTableCell]` directive in the DI tree, or\n * - the caller is rendered via `*flexRender` with render props containing `cell`\n */\nexport function injectTableCellContext<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData,\n>(): TanStackTableCellContext<TFeatures, TData, TValue>['cell'] {\n return inject(TanStackTableCellToken)\n}\n","import { Directive, InjectionToken, inject, input } from '@angular/core'\nimport { CellData, Header, RowData, TableFeatures } from '@tanstack/table-core'\nimport type { Signal } from '@angular/core'\n\n/**\n * DI context shape for a TanStack Table header.\n *\n * This exists to make the current `Header` injectable by any nested component/directive\n * without passing it through inputs/props.\n */\nexport interface TanStackTableHeaderContext<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData,\n> {\n /** Signal that returns the current header instance. */\n header: Signal<Header<TFeatures, TData, TValue>>\n}\n\n/**\n * Injection token that provides access to the current header.\n *\n * This token is provided by the {@link TanStackTableHeader} directive.\n */\nexport const TanStackTableHeaderToken = new InjectionToken<\n TanStackTableHeaderContext<any, any, any>['header']\n>('[TanStack Table] HeaderContext')\n\n/**\n * Provides a TanStack Table `Header` instance in Angular DI.\n *\n * The header can be injected by:\n * - any descendant of an element using `[tanStackTableHeader]=\"...\"`\n * - any component instantiated by `*flexRender` when the render props contains `header`\n *\n * @example\n * ```html\n * <th [tanStackTableHeader]=\"header\">\n * <app-sort-indicator />\n * </th>\n * ```\n *\n * ```ts\n * @Component({\n * selector: 'app-sort-indicator',\n * template: `\n * <button (click)=\"toggle()\">\n * {{ header().column.id }}\n * </button>\n * `,\n * })\n * export class SortIndicatorComponent {\n * readonly header = injectTableHeaderContext()\n *\n * toggle() {\n * this.header().column.toggleSorting()\n * }\n * }\n * ```\n */\n@Directive({\n selector: '[tanStackTableHeader]',\n exportAs: 'header',\n providers: [\n {\n provide: TanStackTableHeaderToken,\n useFactory: () => inject(TanStackTableHeader).header,\n },\n ],\n})\nexport class TanStackTableHeader<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData,\n> implements TanStackTableHeaderContext<TFeatures, TData, TValue> {\n /**\n * The current TanStack Table header.\n *\n * Provided as a required signal input so DI consumers always read the latest value.\n */\n readonly header = input.required<Header<TFeatures, TData, TValue>>({\n alias: 'tanStackTableHeader',\n })\n}\n\n/**\n * Injects the current TanStack Table header signal.\n *\n * Available when:\n * - there is a nearest `[tanStackTableHeader]` directive in the DI tree, or\n * - the caller is rendered via `*flexRender` with render props containing `header`\n */\nexport function injectTableHeaderContext<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData,\n>(): TanStackTableHeaderContext<TFeatures, TData, TValue>['header'] {\n return inject(TanStackTableHeaderToken)\n}\n","import { Directive, InjectionToken, inject, input } from '@angular/core'\nimport { RowData, TableFeatures } from '@tanstack/table-core'\nimport { AngularTable } from '../injectTable'\nimport type { Signal } from '@angular/core'\n\n/**\n * Injection token that provides access to the current {@link AngularTable} instance.\n *\n * This token is provided by the {@link TanStackTable} directive.\n */\nexport const TanStackTableToken = new InjectionToken<\n Signal<AngularTable<any, any>>\n>('[TanStack Table] Table Context')\n\n/**\n * Provides a TanStack Table instance (`AngularTable`) in Angular DI.\n *\n * The table can be injected by:\n * - any descendant of an element using `[tanStackTable]=\"...\"`\n * - any component instantiated by `*flexRender` when the render props contains `table`\n *\n * @example\n * ```html\n * <div [tanStackTable]=\"table\">\n * <app-pagination />\n * </div>\n * ```\n *\n * ```ts\n * @Component({\n * selector: 'app-pagination',\n * template: `\n * <button (click)=\"prev()\" [disabled]=\"!table().getCanPreviousPage()\">Prev</button>\n * <button (click)=\"next()\" [disabled]=\"!table().getCanNextPage()\">Next</button>\n * `,\n * })\n * export class PaginationComponent {\n * readonly table = injectTableContext()\n *\n * prev() {\n * this.table().previousPage()\n * }\n * next() {\n * this.table().nextPage()\n * }\n * }\n * ```\n */\n@Directive({\n selector: '[tanStackTable]',\n exportAs: 'table',\n providers: [\n {\n provide: TanStackTableToken,\n useFactory: () => inject(TanStackTable).table,\n },\n ],\n})\nexport class TanStackTable<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> {\n /**\n * The current TanStack Table instance.\n *\n * Provided as a required signal input so DI consumers always read the latest value.\n */\n readonly table = input.required<AngularTable<TFeatures, TData>>({\n alias: 'tanStackTable',\n })\n}\n\n/**\n * Injects the current TanStack Table instance signal.\n *\n * Available when:\n * - there is a nearest `[tanStackTable]` directive in the DI tree, or\n * - the caller is rendered via `*flexRender` with render props containing `table`\n */\nexport function injectTableContext<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(): Signal<AngularTable<TFeatures, TData>> {\n return inject(TanStackTableToken)\n}\n","import { InjectionToken, inject } from '@angular/core'\n\nexport const FlexRenderComponentProps = new InjectionToken<\n NonNullable<unknown>\n>('[@tanstack/angular-table] Flex render component context props')\n\n/**\n * Inject the flex render context props.\n *\n * Can be used in components rendered via FlexRender directives.\n */\nexport function injectFlexRenderContext<T extends NonNullable<unknown>>(): T {\n return inject<T>(FlexRenderComponentProps)\n}\n","/**\n * Flags used to manage and optimize the rendering lifecycle of the content of the cell\n * while using {@link FlexViewRenderer}.\n */\nexport const FlexRenderFlags = {\n /**\n * Indicates that the view is being created for the first time or will be cleared during the next update phase.\n * This is the initial state and will transition after the first ngDoCheck.\n */\n ViewFirstRender: 1 << 0,\n /**\n * Indicates the `content` property has been modified or the view requires a complete re-render.\n * When this flag is enabled, the view will be cleared and recreated from scratch.\n */\n ContentChanged: 1 << 1,\n /**\n * Indicates that the `props` property reference has changed.\n * When this flag is enabled, the view context is updated based on the type of the content.\n *\n * For Component view, inputs will be updated and view will be marked as dirty.\n * For TemplateRef and primitive values, view will be marked as dirty\n */\n PropsReferenceChanged: 1 << 2,\n /**\n * Indicates that the current rendered view needs to be checked for changes.\n * This will be set to true when `content(props)` result has changed or during\n * forced update\n */\n Dirty: 1 << 3,\n /**\n * Indicates that the first render effect has been checked at least one time.\n */\n RenderEffectChecked: 1 << 4,\n} as const\n","import { reflectComponentType } from '@angular/core'\nimport type {\n Binding,\n ComponentMirror,\n Injector,\n InputSignal,\n OutputEmitterRef,\n Type,\n createComponent,\n} from '@angular/core'\n\ntype CreateComponentOptions = Parameters<typeof createComponent>[1]\ntype CreateComponentBindings = CreateComponentOptions['bindings']\ntype CreateComponentDirectives = CreateComponentOptions['directives']\n\ninterface FlexRenderOptions<\n TInputs extends Record<string, any>,\n TOutputs extends Record<string, any>,\n> {\n /**\n * Native Angular bindings applied at component creation time via `createComponent`.\n * Use this option to set inputs, outputs, or two-way bindings at creation time.\n * Shouldn't be used together with {@link FlexRenderOptions#inputs} or {@link FlexRenderOptions#outputs} option.\n *\n * Binding input/outputs at creation time: {@link https://angular.dev/guide/components/programmatic-rendering#binding-inputs-outputs-and-setting-host-directives-at-creation}\n *\n * Two-way binding: {@link https://angular.dev/api/core/twoWayBinding}\n *\n * Output binding: {@link https://angular.dev/api/core/outputBinding}\n *\n * Input binding: {@link https://angular.dev/api/core/inputBinding}\n *\n * @example\n * ```ts\n * import {flexRenderComponent} from '@tanstack/angular-table';\n * flexRenderComponent(MyComponent, {\n * bindings: [\n * // Will update `value` input every time `mySignalValue` changes\n * inputBinding('value', mySignalValue),\n * // Set myProperty to 1 when the component is created\n * inputBinding('myProperty', () => 1),\n * // Callback called every time `valueChange` output emit\n * outputBinding('valueChange', value => {\n * console.log(\"my value changed to\", value)\n * }),\n * // Two-way binding between `value` input and `valueChange` output\n * // Useful while using `model` inputs.\n * twoWayBinding('value', mySignal)\n * ]\n * })\n * ```\n */\n readonly bindings?: Array<Binding>\n /**\n * Directives to apply to the component at creation time.\n *\n * Binding directives at creation time: {@link https://angular.dev/guide/components/programmatic-rendering#binding-inputs-outputs-and-setting-host-directives-at-creation}\n *\n * Two-way binding: {@link https://angular.dev/api/core/twoWayBinding}\n *\n * Output binding: {@link https://angular.dev/api/core/outputBinding}\n *\n * Input binding: {@link https://angular.dev/api/core/inputBinding}\n *\n * @example\n * ```ts\n * import {flexRenderComponent} from '@tanstack/angular-table';\n * flexRenderComponent(MyComponent, {\n * bindings: [\n * // ...\n * ],\n * directives: [\n * DirectiveA,\n * {\n * type: DirectiveB,\n * bindings: [\n * inputBinding('value', mySignalValue),\n * // ...\n * ]\n * }\n * ]\n * })\n * ```\n */\n readonly directives?: CreateComponentDirectives\n /**\n * Component instance inputs.\n *\n * These values are assigned after the component has been created using\n * [componentRef.setInput API](https://angular.dev/api/core/ComponentRef#setInput).\n *\n * Shouldn't be used together with {@link FlexRenderOptions#bindings} option\n */\n readonly inputs?: TInputs\n /**\n * Component instance outputs.\n *\n * Outputs are wired imperatively after component creation using {@link OutputEmitterRef#subscribe}.\n *\n * Shouldn't be used together with {@link FlexRenderOptions#bindings} option\n */\n readonly outputs?: TOutputs\n /**\n * Optional {@link Injector} that will be used when rendering the component\n */\n readonly injector?: Injector\n}\n\ntype Inputs<T> = {\n [K in keyof T as T[K] extends InputSignal<infer R>\n ? K\n : never]?: T[K] extends InputSignal<infer R> ? R : never\n}\n\ntype Outputs<T> = {\n [K in keyof T as T[K] extends OutputEmitterRef<infer R>\n ? K\n : never]?: T[K] extends OutputEmitterRef<infer R>\n ? OutputEmitterRef<R>['emit']\n : never\n}\n\n/**\n * Helper function to create a {@link FlexRenderComponent} instance, with better type-safety.\n *\n * @example\n * ```ts\n * import {flexRenderComponent} from '@tanstack/angular-table'\n * import {inputBinding, outputBinding} from '@angular/core';\n *\n * const columns = [\n * {\n * cell: ({ row }) => {\n * return flexRenderComponent(MyComponent, {\n * inputs: { value: mySignalValue() },\n * outputs: { valueChange: (val) => {} }\n * // or using angular native createComponent#binding api\n * bindings: [\n * inputBinding('value', mySignalValue),\n * outputBinding('valueChange', value => {\n * console.log(\"my value changed to\", value)\n * })\n * ]\n * })\n * },\n * },\n * ]\n * ```\n */\nexport function flexRenderComponent<TComponent = any>(\n component: Type<TComponent>,\n options?: FlexRenderOptions<Inputs<TComponent>, Outputs<TComponent>>,\n): FlexRenderComponent<TComponent> {\n const { inputs, injector, outputs, directives, bindings } = options ?? {}\n return new FlexRenderComponentInstance(\n component,\n inputs,\n injector,\n outputs,\n directives,\n bindings,\n )\n}\n\n/**\n * Wrapper interface for a component that will be used as content for {@link FlexRenderDirective}.\n * Can be created using {@link flexRenderComponent} helper.\n *\n * @example\n *\n * ```ts\n * import {flexRenderComponent} from '@tanstack/angular-table'\n *\n * // Usage in cell/header/footer definition\n * const columns = [\n * {\n * cell: ({ row }) => {\n * return flexRenderComponent(MyComponent, {\n * inputs: { value: mySignalValue() },\n * outputs: { valueChange: (val) => {} }\n * // or using angular createComponent#bindings api\n * bindings: [\n * inputBinding('value', mySignalValue),\n * outputBinding('valueChange', value => {\n * console.log(\"my value changed to\", value)\n * })\n * ]\n * })\n * },\n * },\n * ]\n *\n * import {input, output} from '@angular/core';\n *\n * @Component({\n * selector: 'my-component',\n * })\n * class MyComponent {\n * readonly value = input(0);\n * readonly valueChange = output<number>();\n * }\n *\n * ```\n */\nexport interface FlexRenderComponent<TComponent = any> {\n /**\n * The component type\n */\n readonly component: Type<TComponent>\n /**\n * Reflected metadata about the component.\n */\n readonly mirror: ComponentMirror<TComponent>\n /**\n * List of allowed input names.\n */\n readonly allowedInputNames: Array<string>\n /**\n * List of allowed output names.\n */\n readonly allowedOutputNames: Array<string>\n /**\n * Component instance outputs. Subscribed via {@link OutputEmitterRef#subscribe}\n *\n * @see {@link FlexRenderOptions#outputs}\n */\n readonly outputs?: Outputs<TComponent>\n /**\n * Component instance inputs. Set via [componentRef.setInput API](https://angular.dev/api/core/ComponentRef#setInput))\n *\n * @see {@link FlexRenderOptions#inputs}\n */\n readonly inputs?: Inputs<TComponent>\n /**\n * Optional {@link Injector} that will be used when rendering the component.\n *\n * @see {@link FlexRenderOptions#injector}\n */\n readonly injector?: Injector\n /**\n * Bindings to apply to the root component\n *\n * @see {@link FlexRenderOptions#bindings}\n */\n bindings?: CreateComponentBindings\n /**\n * Directives that should be applied to the component.\n *\n * @see {FlexRenderOptions#directives}\n */\n directives?: CreateComponentDirectives\n}\n\n/**\n * Wrapper class for a component that will be used as content for {@link FlexRenderDirective}\n *\n * Prefer {@link flexRenderComponent} helper for better type-safety\n */\nexport class FlexRenderComponentInstance<\n TComponent = any,\n> implements FlexRenderComponent<TComponent> {\n readonly mirror: ComponentMirror<TComponent>\n readonly allowedInputNames: Array<string> = []\n readonly allowedOutputNames: Array<string> = []\n\n constructor(\n readonly component: Type<TComponent>,\n readonly inputs?: Inputs<TComponent>,\n readonly injector?: Injector,\n readonly outputs?: Outputs<TComponent>,\n readonly directives?: CreateComponentDirectives,\n readonly bindings?: CreateComponentBindings,\n ) {\n const mirror = reflectComponentType(component)\n if (!mirror) {\n throw new Error(\n `[@tanstack-table/angular] The provided symbol is not a component`,\n )\n }\n this.mirror = mirror\n for (const input of this.mirror.inputs) {\n this.allowedInputNames.push(input.propName)\n }\n for (const output of this.mirror.outputs) {\n this.allowedOutputNames.push(output.propName)\n }\n }\n}\n","import {\n ChangeDetectorRef,\n ComponentRef,\n Injectable,\n Injector,\n KeyValueDiffer,\n KeyValueDiffers,\n OutputEmitterRef,\n OutputRefSubscription,\n ViewContainerRef,\n} from '@angular/core'\nimport { FlexRenderComponent } from './flexRenderComponent'\n\n/**\n * Creates and manages Angular component instances used by flex-rendered table\n * content.\n */\n@Injectable()\nexport class FlexRenderComponentFactory {\n readonly #viewContainerRef: ViewContainerRef\n\n constructor(viewContainerRef: ViewContainerRef) {\n this.#viewContainerRef = viewContainerRef\n }\n\n createComponent<T>(\n flexRenderComponent: FlexRenderComponent<T>,\n componentInjector: Injector,\n ): FlexRenderComponentRef<T> {\n const componentRef = this.#viewContainerRef.createComponent(\n flexRenderComponent.component,\n {\n injector: componentInjector,\n directives: flexRenderComponent.directives,\n bindings: flexRenderComponent.bindings ?? [],\n },\n )\n const view = new FlexRenderComponentRef(\n componentRef,\n flexRenderComponent,\n componentInjector,\n )\n\n const { inputs, outputs } = flexRenderComponent\n\n if (inputs) view.setInputs(inputs)\n if (outputs) view.setOutputs(outputs)\n\n return view\n }\n}\n\n/**\n * Runtime wrapper around an Angular component rendered by `FlexRenderDirective`.\n *\n * It diffs inputs and outputs across table updates so component renderers can\n * be reused instead of recreated on every cell/header render.\n */\nexport class FlexRenderComponentRef<T> {\n readonly #keyValueDiffersFactory: KeyValueDiffers\n #componentData: FlexRenderComponent<T>\n #inputValueDiffer: KeyValueDiffer<string, unknown>\n\n readonly #outputRegistry: FlexRenderComponentOutputManager\n\n constructor(\n readonly componentRef: ComponentRef<T>,\n componentData: FlexRenderComponent<T>,\n readonly componentInjector: Injector,\n ) {\n this.#componentData = componentData\n this.#keyValueDiffersFactory = componentInjector.get(KeyValueDiffers)\n\n this.#outputRegistry = new FlexRenderComponentOutputManager(\n this.#keyValueDiffersFactory,\n this.outputs,\n )\n\n this.#inputValueDiffer = this.#keyValueDiffersFactory\n .find(this.inputs)\n .create()\n this.#inputValueDiffer.diff(this.inputs)\n\n this.componentRef.onDestroy(() => this.#outputRegistry.unsubscribeAll())\n }\n\n get component() {\n return this.#componentData.component\n }\n\n get inputs() {\n return this.#componentData.inputs ?? {}\n }\n\n get outputs() {\n return this.#componentData.outputs ?? {}\n }\n\n /**\n * Get component input and output diff by the given item\n */\n diff(item: FlexRenderComponent<T>) {\n return {\n inputDiff: this.#inputValueDiffer.diff(item.inputs ?? {}),\n outputDiff: this.#outputRegistry.diff(item.outputs ?? {}),\n }\n }\n /**\n *\n * @param compare Whether the current ref component instance is the same as the given one\n */\n eqType(compare: FlexRenderComponent<T>): boolean {\n return compare.component === this.component\n }\n\n /**\n * Tries to update current component refs input by the new given content component.\n */\n update(content: FlexRenderComponent<T>) {\n const eq = this.eqType(content)\n if (!eq) return\n const { inputDiff, outputDiff } = this.diff(content)\n if (inputDiff) {\n inputDiff.forEachAddedItem((item) =>\n this.setInput(item.key, item.currentValue),\n )\n inputDiff.forEachChangedItem((item) =>\n this.setInput(item.key, item.currentValue),\n )\n inputDiff.forEachRemovedItem((item) => this.setInput(item.key, undefined))\n }\n if (outputDiff) {\n outputDiff.forEachAddedItem((item) => {\n this.setOutput(item.key, item.currentValue)\n })\n outputDiff.forEachChangedItem((item) => {\n if (item.currentValue) {\n this.#outputRegistry.setListener(item.key, item.currentValue)\n } else {\n this.#outputRegistry.unsubscribe(item.key)\n }\n })\n outputDiff.forEachRemovedItem((item) => {\n this.#outputRegistry.unsubscribe(item.key)\n })\n }\n\n this.#componentData = content\n }\n\n markAsDirty(): void {\n this.componentRef.injector.get(ChangeDetectorRef).markForCheck()\n }\n\n setInputs(inputs: Record<string, unknown>) {\n for (const prop in inputs) {\n this.setInput(prop, inputs[prop])\n }\n }\n\n setInput(key: string, value: unknown) {\n if (this.#componentData.allowedInputNames.includes(key)) {\n this.componentRef.setInput(key, value)\n }\n }\n\n setOutputs(\n outputs: Record<\n string,\n OutputEmitterRef<unknown>['emit'] | null | undefined\n >,\n ) {\n this.#outputRegistry.unsubscribeAll()\n for (const prop in outputs) {\n this.setOutput(prop, outputs[prop])\n }\n }\n\n setOutput(\n outputName: string,\n emit: OutputEmitterRef<unknown>['emit'] | undefined | null,\n ): void {\n if (!this.#componentData.allowedOutputNames.includes(outputName)) return\n if (!emit) {\n this.#outputRegistry.unsubscribe(outputName)\n return\n }\n\n const hasListener = this.#outputRegistry.hasListener(outputName)\n this.#outputRegistry.setListener(outputName, emit)\n\n if (hasListener) {\n return\n }\n\n const instance = this.componentRef.instance\n const output = instance[outputName as keyof typeof instance]\n if (output && output instanceof OutputEmitterRef) {\n output.subscribe((value) => {\n this.#outputRegistry.getListener(outputName)?.(value)\n })\n }\n }\n}\n\nclass FlexRenderComponentOutputManager {\n readonly #outputSubscribers: Record<string, OutputRefSubscription> = {}\n readonly #outputListeners: Record<string, (...args: Array<any>) => void> = {}\n\n readonly #valueDiffer: KeyValueDiffer<\n string,\n undefined | null | OutputEmitterRef<unknown>['emit']\n >\n\n constructor(keyValueDiffers: KeyValueDiffers, initialOutputs: any) {\n this.#valueDiffer = keyValueDiffers.find(initialOutputs).create()\n if (initialOutputs) {\n this.#valueDiffer.diff(initialOutputs)\n }\n }\n\n hasListener(outputName: string) {\n return outputName in this.#outputListeners\n }\n\n setListener(outputName: string, callback: (...args: Array<any>) => void) {\n this.#outputListeners[outputName] = callback\n }\n\n getListener(outputName: string) {\n return this.#outputListeners[outputName]\n }\n\n unsubscribeAll(): void {\n for (const prop in this.#outputSubscribers) {\n this.unsubscribe(prop)\n }\n }\n\n unsubscribe(outputName: string) {\n if (outputName in this.#outputSubscribers) {\n this.#outputSubscribers[outputName]?.unsubscribe()\n delete this.#outputSubscribers[outputName]\n delete this.#outputListeners[outputName]\n }\n }\n\n diff(outputs: Record<string, OutputEmitterRef<unknown>['emit'] | undefined>) {\n return this.#valueDiffer.diff(outputs)\n }\n}\n","import { TemplateRef, Type } from '@angular/core'\nimport { FlexRenderComponentInstance } from './flexRenderComponent'\nimport type { FlexRenderComponent } from './flexRenderComponent'\nimport type { FlexRenderContent } from './renderer'\nimport type { EmbeddedViewRef } from '@angular/core'\nimport type { FlexRenderComponentRef } from './flexRenderComponentFactory'\n\nexport type FlexRenderTypedContent =\n | { kind: 'null' }\n | {\n kind: 'primitive'\n content: string | number | Record<string, any>\n }\n | { kind: 'flexRenderComponent'; content: FlexRenderComponent<unknown> }\n | { kind: 'templateRef'; content: TemplateRef<unknown> }\n | { kind: 'component'; content: Type<unknown> }\n\n/**\n * Normalizes arbitrary Angular flex-render content into the renderer's internal\n * tagged representation.\n *\n * This lets the directive decide whether to reuse, update, or recreate an\n * embedded view or component view.\n */\nexport function mapToFlexRenderTypedContent(\n content: FlexRenderContent<any>,\n): FlexRenderTypedContent {\n if (content === null || content === undefined) {\n return { kind: 'null' }\n }\n if (typeof content === 'string' || typeof content === 'number') {\n return { kind: 'primitive', content }\n }\n if (content instanceof FlexRenderComponentInstance) {\n return { kind: 'flexRenderComponent', content }\n } else if (content instanceof TemplateRef) {\n return { kind: 'templateRef', content }\n } else if (content instanceof Type) {\n return { kind: 'component', content }\n } else {\n return { kind: 'primitive', content }\n }\n}\n\nexport type FlexRenderViewAllowedType =\n | FlexRenderComponentRef<any>\n | EmbeddedViewRef<unknown>\n | null\n\nexport abstract class FlexRenderView<\n TView extends FlexRenderViewAllowedType,\n TContent extends FlexRenderTypedContent,\n> {\n readonly view: TView\n #previousContent: FlexRenderTypedContent | undefined\n #content: FlexRenderTypedContent\n\n protected constructor(\n initialContent: Exclude<FlexRenderTypedContent, { kind: 'null' }>,\n view: TView,\n ) {\n this.#content = initialContent\n this.view = view\n }\n\n get previousContent(): FlexRenderTypedContent {\n return this.#previousContent ?? { kind: 'null' }\n }\n\n get content() {\n return this.#content\n }\n\n set content(content: FlexRenderTypedContent) {\n this.#previousContent = this.#content\n this.#content = content\n }\n\n abstract updateProps(props: Record<string, any>): void\n\n abstract dirtyCheck(): void\n\n abstract onDestroy(callback: Function): void\n\n abstract eq(view: TContent): boolean\n\n abstract unmount(): void\n}\n\n/**\n * Tracks an Angular embedded template view rendered by `FlexRenderDirective`.\n *\n * Template views receive updated props through their proxied context and can be\n * reused while the rendered content kind stays compatible.\n */\nexport class FlexRenderTemplateView extends FlexRenderView<\n EmbeddedViewRef<unknown>,\n Extract<FlexRenderTypedContent, { kind: 'primitive' | 'templateRef' }>\n> {\n constructor(\n initialContent: Extract<\n FlexRenderTypedContent,\n { kind: 'primitive' | 'templateRef' }\n >,\n view: EmbeddedViewRef<unknown>,\n ) {\n super(initialContent, view)\n }\n\n override updateProps(props: Record<string, any>) {\n this.view.markForCheck()\n }\n\n override dirtyCheck() {\n // Basically a no-op. When the view is created via EmbeddedViewRef, we don't need to do any manual update\n // since this type of content has a proxy as a context, then every time the root component is checked for changes,\n // the property getter will be re-evaluated.\n //\n // If in a future we need to manually mark the view as dirty, just uncomment next line\n // this.view.markForCheck()\n }\n\n override unmount() {\n this.view.destroy()\n }\n\n override onDestroy(callback: Function) {\n this.view.onDestroy(callback)\n }\n\n override eq(\n compare: Extract<\n FlexRenderTypedContent,\n { kind: 'primitive' | 'templateRef' }\n >,\n ): boolean {\n return (\n (this.content.kind === 'primitive' &&\n compare.kind === 'primitive' &&\n this.content.content === compare.content) ||\n (this.content.kind === 'templateRef' &&\n compare.kind === 'templateRef' &&\n this.content.content === compare.content)\n )\n }\n}\n\n/**\n * Tracks an Angular component view rendered by `FlexRenderDirective`.\n *\n * Component views own input/output updates for `flexRenderComponent(...)`\n * results and component classes rendered directly from column definitions.\n */\nexport class FlexRenderComponentView extends FlexRenderView<\n FlexRenderComponentRef<unknown>,\n Extract<FlexRenderTypedContent, { kind: 'component' | 'flexRenderComponent' }>\n> {\n constructor(\n initialContent: Extract<\n FlexRenderTypedContent,\n { kind: 'component' | 'flexRenderComponent' }\n >,\n view: FlexRenderComponentRef<unknown>,\n ) {\n super(initialContent, view)\n }\n\n override updateProps(props: Record<string, any>) {\n switch (this.content.kind) {\n case 'component': {\n this.view.setInputs(props)\n break\n }\n case 'flexRenderComponent': {\n // No-op. When FlexRenderFlags.PropsReferenceChanged is set,\n // FlexRenderComponent will be updated into `dirtyCheck`.\n break\n }\n }\n }\n\n override dirtyCheck() {\n switch (this.content.kind) {\n case 'component': {\n // Component context is currently valuated with the cell context. Since it's reference\n // shouldn't change, we force mark the component as dirty in order to re-evaluate function invocation in view.\n // NOTE: this should behave like having a component with ChangeDetectionStrategy.Default\n this.view.markAsDirty()\n break\n }\n case 'flexRenderComponent': {\n // Given context instance will always have a different reference than the previous one,\n // so instead of recreating the entire view, we will only update the current view\n if (this.view.eqType(this.content.content)) {\n this.view.update(this.content.content)\n }\n this.view.markAsDirty()\n break\n }\n }\n }\n\n override unmount() {\n this.view.componentRef.destroy()\n }\n\n override onDestroy(callback: Function) {\n this.view.componentRef.onDestroy(callback)\n }\n\n override eq(\n compare: Extract<\n FlexRenderTypedContent,\n { kind: 'component' | 'flexRenderComponent' }\n >,\n ): boolean {\n return (\n (this.content.kind === 'component' &&\n compare.kind === 'component' &&\n this.content.content === compare.content) ||\n (this.content.kind === 'flexRenderComponent' &&\n compare.kind === 'flexRenderComponent' &&\n this.content.content.component === compare.content.component)\n )\n }\n}\n","import {\n Injector,\n computed,\n effect,\n runInInjectionContext,\n untracked,\n} from '@angular/core'\nimport { TanStackTableCellToken } from '../helpers/cell'\nimport { TanStackTableHeaderToken } from '../helpers/header'\nimport { TanStackTableToken } from '../helpers/table'\nimport { FlexRenderComponentProps } from './context'\nimport { FlexRenderFlags } from './flags'\nimport { flexRenderComponent } from './flexRenderComponent'\nimport { FlexRenderComponentFactory } from './flexRenderComponentFactory'\nimport {\n FlexRenderComponentView,\n FlexRenderTemplateView,\n mapToFlexRenderTypedContent,\n} from './view'\nimport type {\n FlexRenderTypedContent,\n FlexRenderView,\n FlexRenderViewAllowedType,\n} from './view'\nimport type { FlexRenderComponent } from './flexRenderComponent'\nimport type {\n CellContext,\n CellData,\n HeaderContext,\n RowData,\n TableFeatures,\n} from '@tanstack/table-core'\nimport type {\n EffectRef,\n TemplateRef,\n Type,\n ViewContainerRef,\n} from '@angular/core'\n\n/**\n * Content supported by the `flexRender` directive when declaring\n * a table column header/cell.\n */\nexport type FlexRenderContent<TProps extends NonNullable<unknown>> =\n | string\n | number\n | Type<TProps>\n | FlexRenderComponent<TProps>\n | TemplateRef<{ $implicit: TProps }>\n | null\n | Record<any, any>\n | undefined\n\n/**\n * Input content supported by the `flexRender` directives.\n */\nexport type FlexRenderInputContent<TProps extends NonNullable<unknown>> =\n | number\n | string\n | ((props: TProps) => FlexRenderContent<TProps>)\n | null\n | undefined\n\n/**\n * Options used to create a {@link FlexViewRenderer}.\n *\n * This renderer is designed to be embedded inside a directive/component that owns the\n * `ViewContainerRef` and possibly a fallback `TemplateRef`.\n */\ninterface RendererViewOptions<TProps extends NonNullable<unknown>> {\n /**\n * Signal-like getter that returns the latest renderable content.\n */\n content: () => FlexRenderInputContent<TProps>\n /**\n * Signal-like getter returning the current props/context object.\n */\n props: () => NoInfer<TProps>\n /**\n * Getter returning the base injector to evaluate render functions in.\n *\n * If `content` is a function, it will be executed inside this injection context\n * via `runInInjectionContext` so Angular DI works as expected.\n */\n injector: () => Injector\n /**\n * Container that will host the dynamically created view/component.\n */\n viewContainerRef: ViewContainerRef\n /**\n * Fallback template used for primitive rendering.\n *\n * The template is instantiated with `$implicit` set to the primitive string/number.\n */\n templateRef: TemplateRef<unknown>\n}\n\n/**\n * Internal view renderer used by Angular TanStack Table to implement `flexRender` directives.\n *\n * @internal Use FlexRender directives instead.\n */\nexport class FlexViewRenderer<\n TFeatures extends TableFeatures,\n TRowData extends RowData,\n TValue extends CellData,\n TProps extends\n | NonNullable<unknown>\n | CellContext<TFeatures, TRowData, TValue>\n | HeaderContext<TFeatures, TRowData, TValue>,\n> {\n #renderFlags = FlexRenderFlags.ViewFirstRender\n #renderView: FlexRenderView<\n FlexRenderViewAllowedType,\n FlexRenderTypedContent\n > | null = null\n #currentRenderEffectRef: EffectRef | null = null\n #content: () => FlexRenderInputContent<TProps>\n #props: () => TProps\n #injector: () => Injector\n #viewContainerRef: ViewContainerRef\n #templateRef: TemplateRef<unknown>\n #flexRenderComponentFactory: FlexRenderComponentFactory\n\n readonly #getLatestContentValue = () => {\n const content = this.#content()\n const props = this.#props()\n return typeof content !== 'function'\n ? content\n : runInInjectionContext(this.#injector(), () => content(props))\n }\n\n readonly #latestContent = computed(() => this.#getLatestContentValue())\n\n #getContentValue = computed(() => {\n const latestContent = this.#latestContent()\n return mapToFlexRenderTypedContent(latestContent)\n })\n\n constructor(options: RendererViewOptions<TProps>) {\n this.#content = options.content\n this.#props = options.props\n this.#injector = options.injector\n this.#templateRef = options.templateRef\n this.#viewContainerRef = options.viewContainerRef\n this.#flexRenderComponentFactory = new FlexRenderComponentFactory(\n this.#viewContainerRef,\n )\n }\n\n mount(): EffectRef {\n let previousContent: FlexRenderInputContent<TProps>\n let previousProps: TProps\n\n return effect(() => {\n const props = this.#props()\n const content = this.#content()\n\n if (!(this.#renderFlags & FlexRenderFlags.ViewFirstRender)) {\n if (previousContent !== content) {\n this.#renderFlags |= FlexRenderFlags.ContentChanged\n }\n if (previousProps !== props) {\n this.#renderFlags |= FlexRenderFlags.PropsReferenceChanged\n }\n }\n\n untracked(() => this.#update())\n\n if (FlexRenderFlags.ViewFirstRender & this.#renderFlags) {\n this.#renderFlags &= ~FlexRenderFlags.ViewFirstRender\n }\n\n previousContent = content\n previousProps = props\n })\n }\n\n destroy(): void {\n if (this.#currentRenderEffectRef) {\n this.#currentRenderEffectRef.destroy()\n this.#currentRenderEffectRef = null\n }\n if (this.#renderView) {\n this.#renderView.unmount()\n this.#renderView = null\n }\n }\n\n #update() {\n if (\n this.#renderFlags &\n (FlexRenderFlags.ContentChanged | FlexRenderFlags.ViewFirstRender)\n ) {\n this.#render()\n return\n }\n\n if (this.#renderFlags & FlexRenderFlags.PropsReferenceChanged) {\n if (this.#renderView) this.#renderView.updateProps(this.#props())\n this.#renderFlags &= ~FlexRenderFlags.PropsReferenceChanged\n }\n\n if (this.#renderFlags & FlexRenderFlags.Dirty) {\n if (this.#renderView) this.#renderView.dirtyCheck()\n this.#renderFlags &= ~FlexRenderFlags.Dirty\n }\n }\n\n #render() {\n // When the view is recreated from scratch (content change or first render),\n // we have to destroy the current effect listener since it will be recreated\n // skipping the first call (FlexRenderFlags.RenderEffectChecked)\n if (this.#shouldRecreateEntireView() && this.#currentRenderEffectRef) {\n this.#currentRenderEffectRef.destroy()\n this.#currentRenderEffectRef = null\n this.#renderFlags &= ~FlexRenderFlags.RenderEffectChecked\n }\n\n this.#viewContainerRef.clear()\n if (this.#renderView) {\n this.#renderView.unmount()\n this.#renderView = null\n }\n\n this.#renderFlags =\n (this.#renderFlags & FlexRenderFlags.ViewFirstRender) |\n (this.#renderFlags & FlexRenderFlags.RenderEffectChecked)\n\n const resolvedContent = this.#getContentValue()\n this.#renderView = this.#renderViewByContent(resolvedContent)\n // If the content is a function `content(props)`, we initialize an effect\n // to react to changes. If the current fn uses signals, we will set the DirtySignal flag\n // to re-schedule the component updates\n if (\n !this.#currentRenderEffectRef &&\n typeof untracked(this.#content) === 'function'\n ) {\n this.#currentRenderEffectRef = effect(\n () => {\n this.#latestContent()\n if (!(this.#renderFlags & FlexRenderFlags.RenderEffectChecked)) {\n this.#renderFlags |= FlexRenderFlags.RenderEffectChecked\n return\n }\n this.#renderFlags |= FlexRenderFlags.Dirty\n this.#doCheck()\n },\n { injector: this.#viewContainerRef.injector },\n )\n }\n }\n\n #shouldRecreateEntireView() {\n return (\n this.#renderFlags &\n FlexRenderFlags.ContentChanged &\n FlexRenderFlags.ViewFirstRender\n )\n }\n\n #doCheck() {\n const latestContent = this.#getContentValue()\n if (latestContent.kind === 'null' || !this.#renderView) {\n this.#renderFlags |= FlexRenderFlags.ContentChanged\n } else {\n const { kind: currentKind } = this.#renderView.content\n if (\n latestContent.kind !== currentKind ||\n !this.#renderView.eq(latestContent)\n ) {\n this.#renderFlags |= FlexRenderFlags.ContentChanged\n }\n this.#renderView.content = latestContent\n }\n this.#update()\n }\n\n #renderViewByContent(\n content: FlexRenderTypedContent,\n ): FlexRenderView<FlexRenderViewAllowedType, FlexRenderTypedContent> | null {\n if (content.kind === 'primitive') {\n return this.#renderStringContent(content)\n } else if (content.kind === 'templateRef') {\n return this.#renderTemplateRefContent(content)\n } else if (content.kind === 'flexRenderComponent') {\n return this.#renderComponent(content)\n } else if (content.kind === 'component') {\n return this.#renderCustomComponent(content)\n } else {\n return null\n }\n }\n\n #renderStringContent(\n template: Extract<FlexRenderTypedContent, { kind: 'primitive' }>,\n ): FlexRenderTemplateView {\n const context = () => {\n const content = this.#content()\n return typeof content === 'string' || typeof content === 'number'\n ? content\n : runInInjectionContext(this.#injector(), () =>\n content?.(this.#props()),\n )\n }\n const ref = this.#viewContainerRef.createEmbeddedView(this.#templateRef, {\n get $implicit() {\n return context()\n },\n })\n return new FlexRenderTemplateView(template, ref)\n }\n\n #renderTemplateRefContent(\n template: Extract<FlexRenderTypedContent, { kind: 'templateRef' }>,\n ): FlexRenderTemplateView {\n const latestContext = () => this.#props()\n const view = this.#viewContainerRef.createEmbeddedView(\n template.content,\n {\n get $implicit() {\n return latestContext()\n },\n },\n { injector: this.#getInjector() },\n )\n return new FlexRenderTemplateView(template, view)\n }\n\n #renderComponent(\n flexRenderComponent: Extract<\n FlexRenderTypedContent,\n { kind: 'flexRenderComponent' }\n >,\n ): FlexRenderComponentView {\n const { injector } = flexRenderComponent.content\n const componentInjector = this.#getInjector(injector)\n const view = this.#flexRenderComponentFactory.createComponent(\n flexRenderComponent.content,\n componentInjector,\n )\n return new FlexRenderComponentView(flexRenderComponent, view)\n }\n\n #renderCustomComponent(\n component: Extract<FlexRenderTypedContent, { kind: 'component' }>,\n ): FlexRenderComponentView {\n const instance = flexRenderComponent(component.content, {\n inputs: this.#props(),\n })\n const injector = this.#getInjector(instance.injector)\n const view = this.#flexRenderComponentFactory.createComponent(\n instance,\n injector,\n )\n return new FlexRenderComponentView(component, view)\n }\n\n #getInjector(parentInjector?: Injector) {\n const getContext = () => this.#props()\n const proxy = new Proxy(this.#props(), {\n get: (_, key) => getContext()[key as keyof typeof _],\n })\n\n const staticProviders = []\n if ('table' in proxy) {\n staticProviders.push({\n provide: TanStackTableToken,\n useValue: () => proxy.table,\n })\n }\n if ('cell' in proxy) {\n staticProviders.push({\n provide: TanStackTableCellToken,\n useValue: () => proxy.cell,\n })\n }\n if ('header' in proxy) {\n staticProviders.push({\n provide: TanStackTableHeaderToken,\n useValue: () => proxy.header,\n })\n }\n\n return Injector.create({\n parent: parentInjector ?? this.#injector(),\n providers: [\n ...staticProviders,\n { provide: FlexRenderComponentProps, useValue: proxy },\n ],\n })\n }\n}\n","import {\n DestroyRef,\n Directive,\n Injector,\n TemplateRef,\n ViewContainerRef,\n computed,\n inject,\n input,\n} from '@angular/core'\nimport {\n Cell,\n CellData,\n Header,\n RowData,\n TableFeatures,\n} from '@tanstack/table-core'\nimport { FlexViewRenderer } from '../flex-render/renderer'\nimport type { FlexRenderInputContent } from '../flex-render/renderer'\nimport type { CellContext, HeaderContext } from '@tanstack/table-core'\n\n/**\n * Simplified directive wrapper of `*flexRender`.\n *\n * Use this utility component to render headers, cells, or footers with custom markup.\n *\n * Only one prop (`cell`, `header`, or `footer`) may be passed based on the used selector.\n *\n * @example\n * ```html\n * <td *flexRenderCell=\"cell; let cell\">{{cell}}</td>\n * <th *flexRenderHeader=\"header; let header\">{{header}}</th>\n * <th *flexRenderFooter=\"footer; let footer\">{{footer}}</th>\n * ```\n *\n * This replaces calling `*flexRender` directly like this:\n * ```html\n * <td *flexRender=\"cell.column.columnDef.cell; props: cell.getContext(); let cell\">{{cell}}</td>\n * <td *flexRender=\"header.column.columnDef.header; props: header.getContext(); let header\">{{header}}</td>\n * <td *flexRender=\"footer.column.columnDef.footer; props: footer.getContext(); let footer\">{{footer}}</td>\n * ```\n *\n * Can be imported through {@link FlexRenderCell} or {@link FlexRender} import,\n * which the latter is preferred.\n *\n * @example\n * ```ts\n * import {FlexRender} from '@tanstack/angular-table\n *\n * @Component({\n * // ...\n * imports: [\n * FlexRender\n * ]\n * })\n * ```\n */\n@Directive({\n selector:\n 'ng-template[flexRenderCell], ng-template[flexRenderFooter], ng-template[flexRenderHeader]',\n})\nexport class FlexRenderCell<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData,\n> {\n readonly cell = input<Cell<TFeatures, TData, TValue>>(undefined, {\n alias: 'flexRenderCell',\n })\n\n readonly header = input<Header<TFeatures, TData, TValue>>(undefined, {\n alias: 'flexRenderHeader',\n })\n\n readonly footer = input<Header<TFeatures, TData, TValue>>(undefined, {\n alias: 'flexRenderFooter',\n })\n\n readonly #renderData = computed<\n | [\n content: FlexRenderInputContent<CellContext<TFeatures, TData, TValue>>,\n props: CellContext<TFeatures, TData, TValue>,\n ]\n | [\n content: FlexRenderInputContent<\n HeaderContext<TFeatures, TData, TValue>\n >,\n props: HeaderContext<TFeatures, TData, TValue>,\n ]\n | [content: null, props: null]\n >(\n () => {\n const cell = this.cell()\n const header = this.header()\n const footer = this.footer()\n if (cell) {\n return [cell.column.columnDef.cell, cell.getContext()]\n }\n if (header) {\n return [header.column.columnDef.header, header.getContext()]\n }\n if (footer) {\n return [footer.column.columnDef.footer, footer.getContext()]\n }\n return [null, null]\n },\n {\n equal: (a, b) => {\n return a[0] === b[0] && a[1] === b[1]\n },\n },\n )\n\n readonly #injector = inject(Injector)\n readonly #templateRef = inject(TemplateRef)\n readonly #viewContainerRef = inject(ViewContainerRef)\n\n constructor() {\n const content = computed(() => this.#renderData()[0])\n const props = computed(() => this.#renderData()[1])\n\n const renderer = new FlexViewRenderer<TFeatures, TData, TValue, any>({\n content: content,\n props: props,\n injector: () => this.#injector,\n templateRef: this.#templateRef,\n viewContainerRef: this.#viewContainerRef,\n })\n\n renderer.mount()\n\n inject(DestroyRef).onDestroy(() => {\n renderer.destroy()\n })\n }\n}\n","import {\n DestroyRef,\n Directive,\n Injector,\n InputSignal,\n TemplateRef,\n ViewContainerRef,\n inject,\n input,\n} from '@angular/core'\nimport {\n FlexRenderInputContent,\n FlexViewRenderer,\n} from './flex-render/renderer'\nimport type {\n CellContext,\n CellData,\n HeaderContext,\n RowData,\n TableFeatures,\n} from '@tanstack/table-core'\n\nexport {\n injectFlexRenderContext,\n type FlexRenderComponentProps,\n} from './flex-render/context'\n\nexport type {\n FlexRenderInputContent,\n FlexRenderContent,\n} from './flex-render/renderer'\n\n/**\n * Use this utility directive to render headers, cells, or footers with custom markup.\n *\n * Note: If you are rendering cell, header, or footer without custom context or other props,\n * you can use the {@link FlexRenderCell} directive as shorthand instead .\n *\n * @example\n * ```ts\n * import {FlexRender} from '@tanstack/angular-table';\n *\n * @Component({\n * imports: [FlexRender],\n * template: `\n * <td\n * *flexRender=\"\n * cell.column.columnDef.cell;\n * props: cell.getContext();\n * let cell\"\n * >\n * {{cell}}\n * </td>\n *\n * <th\n * *flexRender=\"\n * header.column.columnDef.header;\n * props: header.getContext();\n * let header\"\n * >\n * {{header}}\n * </td>\n *\n * <td\n * *flexRender=\"\n * footer.column.columnDef.footer;\n * props: footer.getContext();\n * let footer\"\n * >\n * {{footer}}\n * </td>\n * `,\n * })\n * class App {\n * }\n * ```\n *\n * Can be imported through {@link FlexRenderDirective} or {@link FlexRender} import,\n * which the latter is preferred.\n */\n@Directive({\n selector: 'ng-template[flexRender]',\n})\nexport class FlexRenderDirective<\n TFeatures extends TableFeatures,\n TRowData extends RowData,\n TValue extends CellData,\n TProps extends\n | NonNullable<unknown>\n | CellContext<TFeatures, TRowData, TValue>\n | HeaderContext<TFeatures, TRowData, TValue>,\n> {\n readonly content: InputSignal<FlexRenderInputContent<TProps>> = input(\n undefined as FlexRenderInputContent<TProps>,\n { alias: 'flexRender' },\n )\n\n readonly props = input<TProps>({} as TProps, {\n alias: 'flexRenderProps',\n })\n\n readonly injector = input(inject(Injector), {\n alias: 'flexRenderInjector',\n })\n\n readonly #viewContainerRef = inject(ViewContainerRef)\n readonly #templateRef = inject(TemplateRef)\n\n constructor() {\n const renderer = new FlexViewRenderer({\n content: this.content,\n props: this.props,\n injector: this.injector,\n templateRef: this.#templateRef,\n viewContainerRef: this.#viewContainerRef,\n })\n\n renderer.mount()\n\n inject(DestroyRef).onDestroy(() => {\n renderer.destroy()\n })\n }\n}\n","import { untracked } from '@angular/core'\n\n/**\n * Implementation from @tanstack/angular-query\n * {https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/util/lazy-init/lazy-init.ts}\n */\nexport function lazyInit<T extends object>(initializer: () => T): T {\n let object: T | null = null\n\n const initializeObject = () => {\n if (!object) {\n object = untracked(() => initializer())\n }\n }\n\n queueMicrotask(() => initializeObject())\n\n const table = () => {}\n\n return new Proxy<T>(table as T, {\n apply(target: T, thisArg: any, argArray: Array<any>): any {\n initializeObject()\n if (typeof object === 'function') {\n return Reflect.apply(object, thisArg, argArray)\n }\n return Reflect.apply(target as any, thisArg, argArray)\n },\n get(_, prop, receiver) {\n initializeObject()\n return Reflect.get(object as T, prop, receiver)\n },\n has(_, prop) {\n initializeObject()\n return Reflect.has(object as T, prop)\n },\n ownKeys() {\n initializeObject()\n return Reflect.ownKeys(object as T)\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n })\n}\n","import { NgZone, computed, signal, untracked } from '@angular/core'\nimport { toObservable } from '@angular/core/rxjs-interop'\nimport type { Injector, Signal, WritableSignal } from '@angular/core'\nimport type {\n Atom,\n Observer,\n ReadonlyAtom,\n Subscription,\n} from '@tanstack/angular-store'\nimport type {\n TableAtomOptions,\n TableReactivityBindings,\n} from '@tanstack/table-core/reactivity'\n\nfunction signalToReadonlyAtom<T>(\n signal: Signal<T>,\n injector: Injector,\n debugName?: string,\n): ReadonlyAtom<T> {\n const _signal = Object.assign(signal, {\n get: () => signal(),\n subscribe: (observer: Observer<T>) => {\n return untracked(() =>\n toObservable(computed(signal), { injector: injector }).subscribe(\n observer,\n ),\n )\n },\n })\n if (debugName) {\n _signal.toString = () => debugName\n }\n return _signal\n}\n\nfunction signalToWritableAtom<T>(\n signal: WritableSignal<T>,\n injector: Injector,\n debugName?: string,\n): Atom<T> {\n const _signal = Object.assign(signal.asReadonly(), {\n set: (updater: T | ((prevVal: T) => T)) => {\n typeof updater === 'function'\n ? signal.update(updater as (val: T) => T)\n : signal.set(updater)\n },\n get: () => signal(),\n subscribe: (observer: Observer<T>) => {\n return untracked(() =>\n toObservable(computed(signal), { injector: injector }).subscribe(\n observer,\n ),\n )\n },\n })\n if (debugName) {\n _signal.toString = () => debugName\n }\n return _signal\n}\n\n/**\n * Creates the table-core reactivity bindings used by the Angular adapter.\n *\n * Table state atoms are backed by TanStack Store atoms. The options store stays\n * framework-native because row-model APIs read `table.options` directly during\n * render. Readonly table atoms bridge Store dependency tracking into Angular\n * computed signals.\n */\nexport function angularReactivity(injector: Injector): TableReactivityBindings {\n const ngZone = injector.get(NgZone)\n const subscriptions = new Set<Subscription>()\n\n return {\n createOptionsStore: true,\n wrapExternalAtoms: true,\n addSubscription: (subscription) => {\n subscriptions.add(subscription)\n },\n unmount: () => {\n subscriptions.forEach((s) => s.unsubscribe())\n subscriptions.clear()\n },\n schedule: (fn) => ngZone.runOutsideAngular(() => queueMicrotask(fn)),\n createReadonlyAtom: <T>(fn: () => T, options?: TableAtomOptions<T>) => {\n const signal = computed(() => fn(), {\n equal: options?.compare,\n debugName: options?.debugName,\n })\n return signalToReadonlyAtom(signal, injector, options?.debugName)\n },\n createWritableAtom: <T>(\n value: T,\n options?: TableAtomOptions<T>,\n ): Atom<T> => {\n const writableSignal = signal(value, {\n equal: options?.compare,\n debugName: options?.debugName,\n })\n return signalToWritableAtom(writableSignal, injector, options?.debugName)\n },\n untrack: untracked,\n batch: (fn) => fn(),\n }\n}\n","import {\n DestroyRef,\n Injector,\n NgZone,\n assertInInjectionContext,\n effect,\n inject,\n untracked,\n} from '@angular/core'\nimport { constructTable } from '@tanstack/table-core'\nimport { lazyInit } from './lazySignalInitializer'\nimport { angularReactivity } from './reactivity'\nimport type {\n RowData,\n Table,\n TableFeatures,\n TableOptions,\n TableState,\n} from '@tanstack/table-core'\nimport type {\n Atom,\n ReadonlyAtom,\n ReadonlyStore,\n Store,\n} from '@tanstack/angular-store'\n\nexport type SubscribeSource<TValue> =\n | Atom<TValue>\n | ReadonlyAtom<TValue>\n | Store<TValue>\n | ReadonlyStore<TValue>\n\nexport type AngularTable<\n TFeatures extends TableFeatures,\n TData extends RowData,\n> = Table<TFeatures, TData> & {\n /**\n * @deprecated Prefer `table.atoms.<slice>.get()` for template/render reads\n * of a specific state slice, `table.state` for full-state debug snapshots, or\n * Angular computed values around explicit selectors. `table.store.state` is a\n * current-value snapshot and is easy to misuse in render code.\n */\n readonly store: Table<TFeatures, TData>['store']\n /**\n * The current table state exposed as a flat proxy. Prefer\n * `table.atoms.<slice>.get()` when reading a specific slice.\n */\n readonly state: Readonly<TableState<TFeatures>>\n}\n\nfunction createStateProxy<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table<TFeatures, TData>): Readonly<TableState<TFeatures>> {\n const getSnapshot = () => {\n const snapshot = {} as TableState<TFeatures>\n const stateKeys = Object.keys(table.initialState) as Array<\n keyof TableState<TFeatures>\n >\n\n for (const key of stateKeys) {\n snapshot[key] = table.atoms[key].get()\n }\n\n return snapshot\n }\n\n const target = {} as TableState<TFeatures>\n\n return new Proxy(target, {\n get(target, prop, receiver) {\n if (prop === 'toJSON') {\n return getSnapshot\n }\n\n if (typeof prop === 'string' && prop in table.initialState) {\n return table.atoms[prop as keyof TableState<TFeatures>]?.get()\n }\n\n return Reflect.get(target, prop, receiver)\n },\n has(_, prop) {\n return typeof prop === 'string' && prop in table.initialState\n },\n ownKeys() {\n return Reflect.ownKeys(table.initialState)\n },\n getOwnPropertyDescriptor(_, prop) {\n if (typeof prop !== 'string' || !(prop in table.initialState)) {\n return undefined\n }\n\n return {\n enumerable: true,\n configurable: true,\n }\n },\n })\n}\n\n/**\n * Creates and returns an Angular-reactive table instance.\n *\n * The initializer is intentionally re-evaluated whenever any signal read inside it changes.\n * This is how the adapter keeps the table in sync with Angular's reactivity model.\n *\n * Because of that behavior, keep expensive/static values (for example `columns`, feature setup, row models)\n * as stable references outside the initializer, and only read reactive state (`data()`, pagination/filter/sorting signals, etc.)\n * inside it.\n *\n * The returned table is also signal-reactive: table state and table APIs are wired for Angular signals, so you can safely consume table methods inside `computed(...)` and `effect(...)`.\n *\n * @example\n * 1. Register the table features you need\n * ```ts\n * // Register only the features you need\n * import {tableFeatures, rowPaginationFeature} from '@tanstack/angular-table';\n * const features = tableFeatures({\n * rowPaginationFeature,\n * // ...all other features you need\n * })\n *\n * // Use all table core features\n * import {stockFeatures} from '@tanstack/angular-table';\n * const features = tableFeatures(stockFeatures);\n * ```\n * 2. Prepare the table columns\n * ```ts\n * import {ColumnDef} from '@tanstack/angular-table';\n *\n * type MyData = {}\n *\n * const columns: ColumnDef<typeof features, MyData>[] = [\n * // ...column definitions\n * ]\n *\n * // or using createColumnHelper\n * import {createColumnHelper} from '@tanstack/angular-table';\n * const columnHelper = createColumnHelper<typeof features, MyData>();\n * const columns = columnHelper.columns([\n * columnHelper.accessor(...),\n * // ...other columns\n * ])\n * ```\n * 3. Create the table instance with `injectTable`\n * ```ts\n * const table = injectTable(() => {\n * // ...table options,\n * features,\n * columns: columns,\n * data: myDataSignal(),\n * })\n * ```\n *\n * @returns An Angular-reactive TanStack Table instance.\n */\nexport function injectTable<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n options: () => TableOptions<TFeatures, TData>,\n): AngularTable<TFeatures, TData> {\n assertInInjectionContext(injectTable)\n const injector = inject(Injector)\n const ngZone = inject(NgZone)\n\n return ngZone.runOutsideAngular(() =>\n lazyInit(() => {\n const table = constructTable({\n ...options(),\n features: {\n coreReativityFeature: angularReactivity(injector),\n ...options().features,\n },\n }) as AngularTable<TFeatures, TData>\n\n injector.get(DestroyRef).onDestroy(() => {\n table._reactivity.unmount?.()\n })\n\n const stateProxy = createStateProxy(table)\n\n Object.defineProperty(table, 'state', {\n get() {\n return stateProxy\n },\n configurable: true,\n enumerable: true,\n })\n\n let isMount = true\n effect(\n () => {\n const newOptions = options()\n if (isMount) {\n isMount = false\n return\n }\n untracked(() =>\n table.setOptions((previous) => ({\n ...previous,\n ...newOptions,\n })),\n )\n },\n { injector, debugName: 'tableOptionsUpdate' },\n )\n\n return table\n }),\n )\n}\n","import { createColumnHelper as coreCreateColumnHelper } from '@tanstack/table-core'\nimport { injectTable } from '../injectTable'\nimport { injectFlexRenderContext } from '../flexRender'\nimport { injectTableHeaderContext as _injectTableHeaderContext } from './header'\nimport { injectTableContext as _injectTableContext } from './table'\nimport { injectTableCellContext as _injectTableCellContext } from './cell'\nimport type { FlexRenderContent } from '../flexRender'\nimport type { AngularTable } from '../injectTable'\nimport type {\n AccessorFn,\n AccessorFnColumnDef,\n AccessorKeyColumnDef,\n Cell,\n CellContext,\n CellData,\n Column,\n ColumnDef,\n DeepKeys,\n DeepValue,\n DisplayColumnDef,\n GroupColumnDef,\n Header,\n HeaderContext,\n IdentifiedColumnDef,\n Row,\n RowData,\n Table,\n TableFeature,\n TableFeatures,\n TableOptions,\n TableState,\n} from '@tanstack/table-core'\nimport type { Signal, Type } from '@angular/core'\n\nexport type RenderableComponent =\n | Type<any>\n | (<T extends NonNullable<unknown>>(props: T) => FlexRenderContent<T>)\n\n// =============================================================================\n// Enhanced Context Types with Pre-bound Components\n// =============================================================================\n\n/**\n * Enhanced CellContext with pre-bound cell components.\n * The `cell` property includes the registered cellComponents.\n */\nexport type AppCellContext<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData,\n TCellComponents extends Record<string, RenderableComponent>,\n> = {\n cell: Cell<TFeatures, TData, TValue> &\n TCellComponents & { FlexRender: () => unknown }\n column: Column<TFeatures, TData, TValue>\n getValue: CellContext<TFeatures, TData, TValue>['getValue']\n renderValue: CellContext<TFeatures, TData, TValue>['renderValue']\n row: Row<TFeatures, TData>\n table: Table<TFeatures, TData>\n}\n\n/**\n * Enhanced HeaderContext with pre-bound header components.\n * The `header` property includes the registered headerComponents.\n */\nexport type AppHeaderContext<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData,\n THeaderComponents extends Record<string, RenderableComponent>,\n> = {\n column: Column<TFeatures, TData, TValue>\n header: Header<TFeatures, TData, TValue> &\n THeaderComponents & { FlexRender: () => unknown }\n table: Table<TFeatures, TData>\n}\n\n// =============================================================================\n// Enhanced Column Definition Types\n// =============================================================================\n\n/**\n * Template type for column definitions that can be a string or a function.\n */\nexport type AppColumnDefTemplate<TProps extends object> =\n | string\n | ((props: TProps) => any)\n\n/**\n * Enhanced column definition base with pre-bound components in cell/header/footer contexts.\n */\nexport type AppColumnDefBase<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData,\n TCellComponents extends Record<string, RenderableComponent>,\n THeaderComponents extends Record<string, RenderableComponent>,\n> = Omit<\n IdentifiedColumnDef<TFeatures, TData, TValue>,\n 'cell' | 'header' | 'footer'\n> & {\n cell?: AppColumnDefTemplate<\n AppCellContext<TFeatures, TData, TValue, TCellComponents>\n >\n header?: AppColumnDefTemplate<\n AppHeaderContext<TFeatures, TData, TValue, THeaderComponents>\n >\n footer?: AppColumnDefTemplate<\n AppHeaderContext<TFeatures, TData, TValue, THeaderComponents>\n >\n}\n\n/**\n * Enhanced display column definition with pre-bound components.\n */\nexport type AppDisplayColumnDef<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TCellComponents extends Record<string, RenderableComponent>,\n THeaderComponents extends Record<string, RenderableComponent>,\n> = Omit<\n DisplayColumnDef<TFeatures, TData, unknown>,\n 'cell' | 'header' | 'footer'\n> & {\n cell?: AppColumnDefTemplate<\n AppCellContext<TFeatures, TData, unknown, TCellComponents>\n >\n header?: AppColumnDefTemplate<\n AppHeaderContext<TFeatures, TData, unknown, THeaderComponents>\n >\n footer?: AppColumnDefTemplate<\n AppHeaderContext<TFeatures, TData, unknown, THeaderComponents>\n >\n}\n\n/**\n * Enhanced group column definition with pre-bound components.\n */\nexport type AppGroupColumnDef<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TCellComponents extends Record<string, RenderableComponent>,\n THeaderComponents extends Record<string, RenderableComponent>,\n> = Omit<\n GroupColumnDef<TFeatures, TData, unknown>,\n 'cell' | 'header' | 'footer' | 'columns'\n> & {\n cell?: AppColumnDefTemplate<\n AppCellContext<TFeatures, TData, unknown, TCellComponents>\n >\n header?: AppColumnDefTemplate<\n AppHeaderContext<TFeatures, TData, unknown, THeaderComponents>\n >\n footer?: AppColumnDefTemplate<\n AppHeaderContext<TFeatures, TData, unknown, THeaderComponents>\n >\n columns?: ReadonlyArray<ColumnDef<TFeatures, TData, unknown>>\n}\n\n// =============================================================================\n// Enhanced Column Helper Type\n// =============================================================================\n\n/**\n * Enhanced column helper with pre-bound components in cell/header/footer contexts.\n * This enables TypeScript to know about the registered components when defining columns.\n */\nexport type AppColumnHelper<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TCellComponents extends Record<string, RenderableComponent>,\n THeaderComponents extends Record<string, RenderableComponent>,\n> = {\n /**\n * Creates a data column definition with an accessor key or function.\n * The cell, header, and footer contexts include pre-bound components.\n */\n accessor: <\n TAccessor extends AccessorFn<TData> | DeepKeys<TData>,\n TValue extends TAccessor extends AccessorFn<TData, infer TReturn>\n ? TReturn\n : TAccessor extends DeepKeys<TData>\n ? DeepValue<TData, TAccessor>\n : never,\n >(\n accessor: TAccessor,\n column: TAccessor extends AccessorFn<TData>\n ? AppColumnDefBase<\n TFeatures,\n TData,\n TValue,\n TCellComponents,\n THeaderComponents\n > & { id: string }\n : AppColumnDefBase<\n TFeatures,\n TData,\n TValue,\n TCellComponents,\n THeaderComponents\n >,\n ) => TAccessor extends AccessorFn<TData>\n ? AccessorFnColumnDef<TFeatures, TData, TValue>\n : AccessorKeyColumnDef<TFeatures, TData, TValue>\n\n /**\n * Wraps an array of column definitions to preserve each column's individual TValue type.\n */\n columns: <TColumns extends ReadonlyArray<ColumnDef<TFeatures, TData, any>>>(\n columns: [...TColumns],\n ) => Array<ColumnDef<TFeatures, TData, any>> & [...TColumns]\n\n /**\n * Creates a display column definition for non-data columns.\n * The cell, header, and footer contexts include pre-bound components.\n */\n display: (\n column: AppDisplayColumnDef<\n TFeatures,\n TData,\n TCellComponents,\n THeaderComponents\n >,\n ) => DisplayColumnDef<TFeatures, TData, unknown>\n\n /**\n * Creates a group column definition with nested child columns.\n * The cell, header, and footer contexts include pre-bound components.\n */\n group: (\n column: AppGroupColumnDef<\n TFeatures,\n TData,\n TCellComponents,\n THeaderComponents\n >,\n ) => GroupColumnDef<TFeatures, TData, unknown>\n}\n\n/**\n * Extended table API returned by useAppTable with all App wrapper components\n */\nexport type AppAngularTable<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TTableComponents extends Record<string, RenderableComponent>,\n TCellComponents extends Record<string, RenderableComponent>,\n THeaderComponents extends Record<string, RenderableComponent>,\n> = AngularTable<TFeatures, TData> &\n NoInfer<TTableComponents> & {\n appCell: <TValue>(\n cell: Cell<TFeatures, TData, TValue>,\n ) => Cell<TFeatures, TData, TValue> & NoInfer<TCellComponents>\n\n appHeader: <TValue>(\n header: Header<TFeatures, TData, TValue>,\n ) => Header<TFeatures, TData, TValue> & NoInfer<THeaderComponents>\n\n appFooter: <TValue>(\n footer: Header<TFeatures, TData, TValue>,\n ) => Header<TFeatures, TData, TValue> & NoInfer<THeaderComponents>\n }\n\n// =============================================================================\n// CreateTableHook Options and Props\n// =============================================================================\n\n/**\n * Options for creating a table hook with pre-bound components and default table options.\n * Extends all TableOptions except 'columns' | 'data' | 'store' | 'state' | 'initialState'.\n */\nexport type CreateTableContextOptions<\n TFeatures extends TableFeatures,\n TTableComponents extends Record<string, RenderableComponent>,\n TCellComponents extends Record<string, RenderableComponent>,\n THeaderComponents extends Record<string, RenderableComponent>,\n> = Omit<\n TableOptions<TFeatures, any>,\n 'columns' | 'data' | 'store' | 'state' | 'initialState'\n> & {\n /**\n * Table-level components that need access to the table instance.\n * These are available directly on the table object returned by useAppTable.\n * Use `useTableContext()` inside these components.\n * @example { PaginationControls, GlobalFilter, RowCount }\n */\n tableComponents?: TTableComponents\n /**\n * Cell-level components that need access to the cell instance.\n * These are available on the cell object passed to AppCell's children.\n * Use `useCellContext()` inside these components.\n * @example { TextCell, NumberCell, DateCell, CurrencyCell }\n */\n cellComponents?: TCellComponents\n /**\n * Header-level components that need access to the header instance.\n * These are available on the header object passed to AppHeader/AppFooter's children.\n * Use `useHeaderContext()` inside these components.\n * @example { SortIndicator, ColumnFilter, ResizeHandle }\n */\n headerComponents?: THeaderComponents\n}\n\nexport type CreateTableHookResult<\n TFeatures extends TableFeatures,\n TTableComponents extends Record<string, RenderableComponent>,\n TCellComponents extends Record<string, RenderableComponent>,\n THeaderComponents extends Record<string, RenderableComponent>,\n> = {\n createAppColumnHelper: <TData extends RowData>() => AppColumnHelper<\n TFeatures,\n TData,\n TCellComponents,\n THeaderComponents\n >\n injectTableContext: <TData extends RowData = RowData>() => Signal<\n AngularTable<TFeatures, TData>\n >\n injectTableHeaderContext: <\n TValue extends CellData = CellData,\n TRowData extends RowData = RowData,\n >() => Signal<Header<TFeatures, TRowData, TValue>>\n injectTableCellContext: <\n TValue extends CellData = CellData,\n TRowData extends RowData = RowData,\n >() => Signal<Cell<TFeatures, TRowData, TValue>>\n injectFlexRenderHeaderContext: <\n TData extends RowData,\n TValue extends CellData,\n >() => HeaderContext<TFeatures, TData, TValue>\n injectFlexRenderCellContext: <\n TData extends RowData,\n TValue extends CellData,\n >() => CellContext<TFeatures, TData, TValue>\n injectAppTable: <TData extends RowData>(\n tableOptions: () => Omit<\n TableOptions<TFeatures, TData>,\n 'features' | 'rowModels'\n >,\n ) => AppAngularTable<\n TFeatures,\n TData,\n TTableComponents,\n TCellComponents,\n THeaderComponents\n >\n}\n\n/**\n * Creates app-scoped Angular table helpers with features, row models, and\n * renderable component maps pre-bound.\n *\n * Use this when an app or design system wants typed `injectAppTable`,\n * pre-bound column helpers, and typed table/cell/header context injection\n * helpers without repeating the same feature and component generics.\n *\n * @example\n * ```ts\n * const { injectAppTable, createAppColumnHelper } = createTableHook({\n * features,\n * rowModels: {},\n * tableComponents: {},\n * cellComponents: {},\n * headerComponents: {},\n * })\n * ```\n */\nexport function createTableHook<\n TFeatures extends TableFeatures,\n const TTableComponents extends Record<string, RenderableComponent>,\n const TCellComponents extends Record<string, RenderableComponent>,\n const THeaderComponents extends Record<string, RenderableComponent>,\n>({\n tableComponents,\n cellComponents,\n headerComponents,\n ...defaultTableOptions\n}: CreateTableContextOptions<\n TFeatures,\n TTableComponents,\n TCellComponents,\n THeaderComponents\n>): CreateTableHookResult<\n TFeatures,\n TTableComponents,\n TCellComponents,\n THeaderComponents\n> {\n function injectTableContext<TData extends RowData = RowData>(): Signal<\n AngularTable<TFeatures, TData>\n > {\n return _injectTableContext<TFeatures, TData>()\n }\n\n function injectTableHeaderContext<\n TValue extends CellData = CellData,\n TRowData extends RowData = RowData,\n >(): Signal<Header<TFeatures, TRowData, TValue>> {\n return _injectTableHeaderContext<TFeatures, TRowData, TValue>()\n }\n\n function injectTableCellContext<\n TValue extends CellData = CellData,\n TRowData extends RowData = RowData,\n >(): Signal<Cell<TFeatures, TRowData, TValue>> {\n return _injectTableCellContext<TFeatures, TRowData, TValue>()\n }\n\n function injectFlexRenderHeaderContext<\n TData extends RowData,\n TValue extends CellData,\n >(): HeaderContext<TFeatures, TData, TValue> {\n return injectFlexRenderContext<HeaderContext<TFeatures, TData, TValue>>()\n }\n\n function injectFlexRenderCellContext<\n TData extends RowData,\n TValue extends CellData,\n >(): CellContext<TFeatures, TData, TValue> {\n return injectFlexRenderContext<CellContext<TFeatures, TData, TValue>>()\n }\n\n function injectAppTable<\n TData extends RowData,\n TSelected = TableState<TFeatures>,\n >(\n tableOptions: () => Omit<\n TableOptions<TFeatures, TData>,\n 'features' | 'rowModels'\n >,\n ): AppAngularTable<\n TFeatures,\n TData,\n TTableComponents,\n TCellComponents,\n THeaderComponents\n > {\n function appCell(cell: Cell<TFeatures, TData, any>) {\n return cell as Cell<TFeatures, TData, any> & TCellComponents\n }\n\n function appHeader(header: Header<TFeatures, TData, any>) {\n return header as Header<TFeatures, TData, any> & THeaderComponents\n }\n\n function appFooter(footer: Header<TFeatures, TData, any>) {\n return footer as Header<TFeatures, TData, any> & THeaderComponents\n }\n\n const appTableFeatures: TableFeature<{}> = {\n constructTableAPIs: (table) => {\n Object.assign(table, tableComponents, { appCell, appHeader, appFooter })\n },\n assignCellPrototype(prototype) {\n Object.assign(prototype, cellComponents)\n },\n assignHeaderPrototype(prototype) {\n Object.assign(prototype, headerComponents)\n },\n }\n\n return injectTable<TFeatures, TData>(() => {\n return {\n ...defaultTableOptions,\n ...tableOptions(),\n features: {\n ...defaultTableOptions.features,\n appTableFeatures,\n },\n } as TableOptions<TFeatures, TData>\n }) as AngularTable<any, any>\n }\n\n function createAppColumnHelper<TData extends RowData>(): AppColumnHelper<\n TFeatures,\n TData,\n TCellComponents,\n THeaderComponents\n > {\n // The runtime implementation is the same - components are attached at render time\n // This cast provides the enhanced types for column definitions\n return coreCreateColumnHelper<TFeatures, TData>() as AppColumnHelper<\n TFeatures,\n TData,\n TCellComponents,\n THeaderComponents\n >\n }\n\n return {\n createAppColumnHelper,\n injectTableContext,\n injectTableHeaderContext,\n injectTableCellContext,\n injectFlexRenderHeaderContext,\n injectFlexRenderCellContext,\n injectAppTable,\n }\n}\n","import { FlexRenderCell } from './helpers/flexRenderCell'\nimport { FlexRenderDirective } from './flexRender'\n\nexport * from '@tanstack/table-core'\n\nexport * from './flexRender'\nexport * from './injectTable'\nexport * from './flex-render/flexRenderComponent'\n\nexport * from './helpers/cell'\nexport * from './helpers/header'\nexport * from './helpers/table'\nexport * from './helpers/createTableHook'\nexport * from './helpers/flexRenderCell'\n\n/**\n * Constant helper to import FlexRender directives.\n *\n * You should prefer to use this constant over importing the directives separately,\n * as it ensures you always have the correct set of directives over library updates.\n *\n * @see {@link FlexRenderDirective} and {@link FlexRenderCell} for more details on the directives included in this export.\n */\nexport const FlexRender = [FlexRenderDirective, FlexRenderCell] as const\n\nexport { shallow } from '@tanstack/angular-store'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["injectTableContext","_injectTableContext","injectTableHeaderContext","_injectTableHeaderContext","injectTableCellContext","_injectTableCellContext","coreCreateColumnHelper"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@tanstack/table-core/static-functions';
|