@zengrid/angular 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/zengrid-angular.mjs +222 -263
- package/fesm2022/zengrid-angular.mjs.map +1 -1
- package/package.json +7 -7
- package/types/zengrid-angular.d.ts +66 -74
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zengrid-angular.mjs","sources":["../../../packages/angular/src/lib/utils/event-map.ts","../../../packages/angular/src/lib/directives/zen-cell-template.directive.ts","../../../packages/angular/src/lib/directives/zen-editor-template.directive.ts","../../../packages/angular/src/lib/directives/zen-header-template.directive.ts","../../../packages/angular/src/lib/components/zen-column.component.ts","../../../packages/angular/src/lib/services/template-bridge.service.ts","../../../packages/angular/src/lib/services/zen-grid-config.token.ts","../../../packages/angular/src/lib/components/zen-grid.component.ts","../../../packages/angular/src/lib/directives/zen-grid-value-accessor.directive.ts","../../../packages/angular/src/lib/plugins/angular-plugin-wrapper.ts","../../../packages/angular/src/lib/utils/signal-bridge.ts","../../../packages/angular/src/public-api.ts","../../../packages/angular/src/zengrid-angular.ts"],"sourcesContent":["export const EVENT_MAP: Record<string, string> = {\n // Cell events\n 'cell:click': 'cellClick',\n 'cell:doubleClick': 'cellDoubleClick',\n 'cell:contextMenu': 'cellContextMenu',\n 'cell:change': 'cellChange',\n 'cell:beforeChange': 'cellBeforeChange',\n 'cell:afterChange': 'cellAfterChange',\n\n // Selection events\n 'selection:change': 'selectionChange',\n 'selection:start': 'selectionStart',\n 'selection:end': 'selectionEnd',\n\n // Editing events\n 'edit:start': 'editStart',\n 'edit:end': 'editEnd',\n 'edit:commit': 'editCommit',\n 'edit:cancel': 'editCancel',\n\n // Scroll events\n 'scroll': 'scroll',\n 'scroll:start': 'scrollStart',\n 'scroll:end': 'scrollEnd',\n\n // Sort events\n 'sort:change': 'sortChange',\n 'sort:beforeSort': 'sortBeforeSort',\n 'sort:afterSort': 'sortAfterSort',\n\n // Filter events\n 'filter:change': 'filterChange',\n 'filter:beforeFilter': 'filterBeforeFilter',\n 'filter:afterFilter': 'filterAfterFilter',\n 'filter:export': 'filterExport',\n 'filter:start': 'filterStart',\n 'filter:end': 'filterEnd',\n 'filter:error': 'filterError',\n 'filter:clear': 'filterClear',\n\n // Focus events\n 'focus:change': 'focusChange',\n 'focus:in': 'focusIn',\n 'focus:out': 'focusOut',\n\n // Keyboard events\n 'key:down': 'keyDown',\n 'key:up': 'keyUp',\n 'key:press': 'keyPress',\n\n // Column events\n 'column:resize': 'columnResize',\n 'column:move': 'columnMove',\n 'column:hide': 'columnHide',\n 'column:show': 'columnShow',\n 'column:dragStart': 'columnDragStart',\n 'column:drag': 'columnDrag',\n 'column:dragEnd': 'columnDragEnd',\n 'column:dragCancel': 'columnDragCancel',\n\n // Header events\n 'header:click': 'headerClick',\n 'header:doubleClick': 'headerDoubleClick',\n 'header:contextMenu': 'headerContextMenu',\n 'header:hover': 'headerHover',\n 'header:sort:click': 'headerSortClick',\n 'header:filter:click': 'headerFilterClick',\n 'header:checkbox:change': 'headerCheckboxChange',\n\n // Lifecycle events\n 'render:start': 'renderStart',\n 'render:end': 'renderEnd',\n 'data:load': 'dataLoad',\n 'data:change': 'dataChange',\n 'loading:start': 'loadingStart',\n 'loading:end': 'loadingEnd',\n 'loading:progress': 'loadingProgress',\n\n // Undo/Redo events\n 'undo-redo:change': 'undoRedoChange',\n\n // Destroy\n 'destroy': 'gridDestroy',\n\n // Error events\n 'error': 'gridError',\n 'warning': 'gridWarning',\n\n // Row events\n 'row:insert': 'rowInsert',\n 'row:delete': 'rowDelete',\n 'row:move': 'rowMove',\n\n // Clipboard events\n 'copy': 'copy',\n 'cut': 'cut',\n 'paste': 'paste',\n};\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { ZenCellTemplateContext } from '../types';\n\n@Directive({\n selector: '[zenCellTemplate]',\n standalone: true,\n})\nexport class ZenCellTemplateDirective {\n readonly templateRef = inject(TemplateRef<ZenCellTemplateContext>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { ZenEditorTemplateContext } from '../types';\n\n@Directive({\n selector: '[zenEditorTemplate]',\n standalone: true,\n})\nexport class ZenEditorTemplateDirective {\n readonly templateRef = inject(TemplateRef<ZenEditorTemplateContext>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { ZenHeaderTemplateContext } from '../types';\n\n@Directive({\n selector: '[zenHeaderTemplate]',\n standalone: true,\n})\nexport class ZenHeaderTemplateDirective {\n readonly templateRef = inject(TemplateRef<ZenHeaderTemplateContext>);\n}\n","import {\n Component,\n input,\n contentChild,\n} from '@angular/core';\nimport type { ColumnDef, CellOverflowConfig } from '@zengrid/core';\nimport { ZenCellTemplateDirective } from '../directives/zen-cell-template.directive';\nimport { ZenEditorTemplateDirective } from '../directives/zen-editor-template.directive';\nimport { ZenHeaderTemplateDirective } from '../directives/zen-header-template.directive';\nimport type { TemplateBridgeService } from '../services/template-bridge.service';\nimport type { RendererInput, EditorInput } from '../types';\n\n@Component({\n selector: 'zen-column',\n standalone: true,\n template: `<ng-content></ng-content>`,\n})\nexport class ZenColumnComponent {\n readonly field = input.required<string>();\n readonly header = input.required<string>();\n readonly width = input<number | undefined>(undefined);\n readonly renderer = input<RendererInput | undefined>(undefined);\n readonly sortable = input<boolean | undefined>(undefined);\n readonly editable = input<boolean | undefined>(undefined);\n readonly editor = input<EditorInput | undefined>(undefined);\n readonly editorOptions = input<any>(undefined);\n readonly filterable = input<boolean | undefined>(undefined);\n readonly resizable = input<boolean | undefined>(undefined);\n readonly reorderable = input<boolean | undefined>(undefined);\n readonly minWidth = input<number | undefined>(undefined);\n readonly maxWidth = input<number | undefined>(undefined);\n readonly overflow = input<CellOverflowConfig | undefined>(undefined);\n readonly autoHeight = input<boolean | undefined>(undefined);\n readonly id = input<string | undefined>(undefined);\n\n readonly cellTemplate = contentChild(ZenCellTemplateDirective);\n readonly editorTemplate = contentChild(ZenEditorTemplateDirective);\n readonly headerTemplate = contentChild(ZenHeaderTemplateDirective);\n\n toColumnDef(bridge: TemplateBridgeService): ColumnDef {\n const def: ColumnDef = {\n field: this.field(),\n header: this.header(),\n };\n\n const colId = this.id();\n const w = this.width();\n const sort = this.sortable();\n const edit = this.editable();\n const edOpts = this.editorOptions();\n const filter = this.filterable();\n const resize = this.resizable();\n const reorder = this.reorderable();\n const minW = this.minWidth();\n const maxW = this.maxWidth();\n const ov = this.overflow();\n const autoH = this.autoHeight();\n\n if (colId !== undefined) def.id = colId;\n if (w !== undefined) def.width = w;\n if (sort !== undefined) def.sortable = sort;\n if (edit !== undefined) def.editable = edit;\n if (edOpts !== undefined) def.editorOptions = edOpts;\n if (filter !== undefined) def.filterable = filter;\n if (resize !== undefined) def.resizable = resize;\n if (reorder !== undefined) def.reorderable = reorder;\n if (minW !== undefined) def.minWidth = minW;\n if (maxW !== undefined) def.maxWidth = maxW;\n if (ov !== undefined) def.overflow = ov;\n if (autoH !== undefined) def.autoHeight = autoH;\n\n // Resolve renderer: template > component/renderer input > none\n const cellTpl = this.cellTemplate();\n const rendererInput = this.renderer();\n if (cellTpl) {\n def.renderer = bridge.createTemplateRenderer(cellTpl.templateRef);\n } else if (rendererInput !== undefined) {\n if (typeof rendererInput === 'string') {\n def.renderer = rendererInput;\n } else if ('render' in rendererInput && typeof rendererInput.render === 'function') {\n def.renderer = rendererInput as any;\n } else {\n // It's a Component type\n def.renderer = bridge.createComponentRenderer(rendererInput as any);\n }\n }\n\n // Resolve editor: template > component/editor input > none\n const edTpl = this.editorTemplate();\n const editorInput = this.editor();\n if (edTpl) {\n def.editor = bridge.createTemplateEditor(edTpl.templateRef);\n } else if (editorInput !== undefined) {\n if (typeof editorInput === 'string') {\n def.editor = editorInput;\n } else if ('init' in editorInput && typeof editorInput.init === 'function') {\n def.editor = editorInput as any;\n } else {\n def.editor = bridge.createComponentEditor(editorInput as any);\n }\n }\n\n return def;\n }\n}\n","import {\n Injectable,\n TemplateRef,\n ApplicationRef,\n EmbeddedViewRef,\n inject,\n Injector,\n createComponent,\n ComponentRef,\n Type,\n EnvironmentInjector,\n} from '@angular/core';\nimport type {\n CellRenderer,\n RenderParams,\n CellEditor,\n EditorParams,\n} from '@zengrid/core';\nimport type { ZenCellTemplateContext, ZenEditorTemplateContext } from '../types';\n\ninterface PooledView<C> {\n viewRef: EmbeddedViewRef<C>;\n inUse: boolean;\n}\n\ninterface PooledComponent {\n componentRef: ComponentRef<any>;\n inUse: boolean;\n}\n\nconst MAX_POOL_SIZE = 100;\n\n@Injectable({ providedIn: 'root' })\nexport class TemplateBridgeService {\n private readonly appRef = inject(ApplicationRef);\n private readonly injector = inject(Injector);\n private readonly envInjector = inject(EnvironmentInjector);\n\n private templatePools = new Map<TemplateRef<any>, PooledView<any>[]>();\n private componentPools = new Map<Type<any>, PooledComponent[]>();\n\n createTemplateRenderer(templateRef: TemplateRef<ZenCellTemplateContext>): CellRenderer {\n return new TemplateRendererBridge(this, templateRef);\n }\n\n createComponentRenderer(componentType: Type<any>): CellRenderer {\n return new ComponentRendererBridge(this, componentType);\n }\n\n createTemplateEditor(templateRef: TemplateRef<ZenEditorTemplateContext>): CellEditor {\n return new TemplateEditorBridge(this, templateRef);\n }\n\n createComponentEditor(componentType: Type<any>): CellEditor {\n return new ComponentEditorBridge(this, componentType);\n }\n\n acquireView<C>(templateRef: TemplateRef<C>, context: C): EmbeddedViewRef<C> {\n let pool = this.templatePools.get(templateRef);\n if (!pool) {\n pool = [];\n this.templatePools.set(templateRef, pool);\n }\n\n // Find a pooled view not in use\n const pooled = pool.find(p => !p.inUse);\n if (pooled) {\n pooled.inUse = true;\n // Update context\n Object.assign(pooled.viewRef.context as any, context);\n pooled.viewRef.detectChanges();\n return pooled.viewRef;\n }\n\n // Create new\n const viewRef = templateRef.createEmbeddedView(context);\n this.appRef.attachView(viewRef);\n\n if (pool.length < MAX_POOL_SIZE) {\n pool.push({ viewRef, inUse: true });\n }\n\n return viewRef;\n }\n\n releaseView<C>(templateRef: TemplateRef<C>, viewRef: EmbeddedViewRef<C>): void {\n const pool = this.templatePools.get(templateRef);\n if (!pool) return;\n\n const pooled = pool.find(p => p.viewRef === viewRef);\n if (pooled) {\n pooled.inUse = false;\n // Detach root nodes from DOM\n for (const node of viewRef.rootNodes) {\n (node as HTMLElement).remove?.();\n }\n } else {\n this.appRef.detachView(viewRef);\n viewRef.destroy();\n }\n }\n\n acquireComponent(componentType: Type<any>, hostElement: HTMLElement): ComponentRef<any> {\n let pool = this.componentPools.get(componentType);\n if (!pool) {\n pool = [];\n this.componentPools.set(componentType, pool);\n }\n\n const pooled = pool.find(p => !p.inUse);\n if (pooled) {\n pooled.inUse = true;\n hostElement.appendChild((pooled.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0]);\n return pooled.componentRef;\n }\n\n const componentRef = createComponent(componentType, {\n environmentInjector: this.envInjector,\n elementInjector: this.injector,\n hostElement,\n });\n this.appRef.attachView(componentRef.hostView);\n\n if (pool.length < MAX_POOL_SIZE) {\n pool.push({ componentRef, inUse: true });\n }\n\n return componentRef;\n }\n\n releaseComponent(componentType: Type<any>, componentRef: ComponentRef<any>): void {\n const pool = this.componentPools.get(componentType);\n if (!pool) return;\n\n const pooled = pool.find(p => p.componentRef === componentRef);\n if (pooled) {\n pooled.inUse = false;\n const rootNode = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n rootNode?.remove?.();\n } else {\n componentRef.destroy();\n }\n }\n\n destroyAll(): void {\n for (const pool of this.templatePools.values()) {\n for (const { viewRef } of pool) {\n this.appRef.detachView(viewRef);\n viewRef.destroy();\n }\n }\n this.templatePools.clear();\n\n for (const pool of this.componentPools.values()) {\n for (const { componentRef } of pool) {\n componentRef.destroy();\n }\n }\n this.componentPools.clear();\n }\n}\n\nclass TemplateRendererBridge implements CellRenderer {\n private activeViews = new Map<HTMLElement, EmbeddedViewRef<ZenCellTemplateContext>>();\n\n constructor(\n private bridge: TemplateBridgeService,\n private templateRef: TemplateRef<ZenCellTemplateContext>,\n ) {}\n\n render(element: HTMLElement, params: RenderParams): void {\n const context: ZenCellTemplateContext = {\n $implicit: params.value,\n value: params.value,\n cell: params.cell,\n row: params.rowData,\n column: params.column!,\n isSelected: params.isSelected,\n };\n\n const viewRef = this.bridge.acquireView(this.templateRef, context);\n for (const node of viewRef.rootNodes) {\n element.appendChild(node);\n }\n this.activeViews.set(element, viewRef);\n }\n\n update(element: HTMLElement, params: RenderParams): void {\n const viewRef = this.activeViews.get(element);\n if (!viewRef) {\n this.render(element, params);\n return;\n }\n\n const ctx = viewRef.context;\n ctx.$implicit = params.value;\n ctx.value = params.value;\n ctx.cell = params.cell;\n ctx.row = params.rowData;\n ctx.column = params.column!;\n ctx.isSelected = params.isSelected;\n viewRef.detectChanges();\n }\n\n destroy(element: HTMLElement): void {\n const viewRef = this.activeViews.get(element);\n if (viewRef) {\n this.bridge.releaseView(this.templateRef, viewRef);\n this.activeViews.delete(element);\n }\n }\n}\n\nclass ComponentRendererBridge implements CellRenderer {\n private activeComponents = new Map<HTMLElement, ComponentRef<any>>();\n\n constructor(\n private bridge: TemplateBridgeService,\n private componentType: Type<any>,\n ) {}\n\n render(element: HTMLElement, params: RenderParams): void {\n const componentRef = this.bridge.acquireComponent(this.componentType, element);\n componentRef.setInput('params', params);\n componentRef.changeDetectorRef.detectChanges();\n this.activeComponents.set(element, componentRef);\n }\n\n update(element: HTMLElement, params: RenderParams): void {\n const componentRef = this.activeComponents.get(element);\n if (!componentRef) {\n this.render(element, params);\n return;\n }\n componentRef.setInput('params', params);\n componentRef.changeDetectorRef.detectChanges();\n }\n\n destroy(element: HTMLElement): void {\n const componentRef = this.activeComponents.get(element);\n if (componentRef) {\n this.bridge.releaseComponent(this.componentType, componentRef);\n this.activeComponents.delete(element);\n }\n }\n}\n\nclass TemplateEditorBridge implements CellEditor {\n private viewRef: EmbeddedViewRef<ZenEditorTemplateContext> | null = null;\n private currentValue: any = null;\n private onCompleteFn: ((value: any, cancelled: boolean) => void) | null = null;\n\n constructor(\n private bridge: TemplateBridgeService,\n private templateRef: TemplateRef<ZenEditorTemplateContext>,\n ) {}\n\n init(container: HTMLElement, value: any, params: EditorParams): void {\n this.currentValue = value;\n this.onCompleteFn = params.onComplete ?? null;\n\n const context: ZenEditorTemplateContext = {\n $implicit: value,\n value,\n cell: params.cell,\n onComplete: (v: any) => {\n this.currentValue = v;\n this.onCompleteFn?.(v, false);\n },\n onChange: (v: any) => {\n this.currentValue = v;\n params.onChange?.(v);\n },\n };\n\n this.viewRef = this.bridge.acquireView(this.templateRef, context);\n for (const node of this.viewRef.rootNodes) {\n container.appendChild(node);\n }\n }\n\n getValue(): any {\n return this.currentValue;\n }\n\n focus(): void {\n if (!this.viewRef) return;\n const firstInput = this.viewRef.rootNodes\n .find((n: any) => n.querySelector?.('input,select,textarea'));\n firstInput?.querySelector?.('input,select,textarea')?.focus();\n }\n\n destroy(): void {\n if (this.viewRef) {\n this.bridge.releaseView(this.templateRef, this.viewRef);\n this.viewRef = null;\n }\n }\n}\n\nclass ComponentEditorBridge implements CellEditor {\n private componentRef: ComponentRef<any> | null = null;\n private currentValue: any = null;\n\n constructor(\n private bridge: TemplateBridgeService,\n private componentType: Type<any>,\n ) {}\n\n init(container: HTMLElement, value: any, params: EditorParams): void {\n this.currentValue = value;\n this.componentRef = this.bridge.acquireComponent(this.componentType, container);\n this.componentRef.setInput('value', value);\n this.componentRef.setInput('params', params);\n this.componentRef.setInput('onComplete', (v: any) => {\n this.currentValue = v;\n params.onComplete?.(v, false);\n });\n this.componentRef.setInput('onChange', (v: any) => {\n this.currentValue = v;\n params.onChange?.(v);\n });\n this.componentRef.changeDetectorRef.detectChanges();\n }\n\n getValue(): any {\n return this.currentValue;\n }\n\n focus(): void {\n const hostEl = this.componentRef?.location?.nativeElement as HTMLElement;\n (hostEl?.querySelector?.('input,select,textarea') as HTMLElement)?.focus();\n }\n\n destroy(): void {\n if (this.componentRef) {\n this.bridge.releaseComponent(this.componentType, this.componentRef);\n this.componentRef = null;\n }\n }\n}\n","import { InjectionToken, type Provider } from '@angular/core';\nimport type { ZenGridConfig } from '../types';\n\nexport const ZEN_GRID_CONFIG = new InjectionToken<ZenGridConfig>('ZenGridConfig');\n\nexport function provideZenGrid(config: ZenGridConfig): Provider {\n return {\n provide: ZEN_GRID_CONFIG,\n useValue: config,\n };\n}\n","import {\n Component,\n ElementRef,\n ChangeDetectionStrategy,\n afterNextRender,\n viewChild,\n contentChildren,\n input,\n output,\n model,\n effect,\n inject,\n PLATFORM_ID,\n ChangeDetectorRef,\n OutputEmitterRef,\n NgZone,\n DestroyRef,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Grid } from '@zengrid/core';\nimport type {\n GridOptions,\n GridExportOptions,\n GridEvents,\n SortState,\n FilterModel,\n CellRange,\n CellRef,\n ColumnDef,\n ColumnStateSnapshot,\n GridStateSnapshot,\n GridPlugin,\n ColumnConstraints,\n HeaderRenderer,\n VisibleRange,\n PaginationConfig,\n LoadingConfig,\n CellOverflowConfig,\n RowHeightConfig,\n SortIcons,\n RendererCacheConfig,\n} from '@zengrid/core';\nimport { GridApiImpl, PluginHost } from '@zengrid/core';\nimport { resolveOperationMode, type OperationMode } from '@zengrid/shared';\nimport { EVENT_MAP } from '../utils/event-map';\nimport { ZenColumnComponent } from './zen-column.component';\nimport { TemplateBridgeService } from '../services/template-bridge.service';\nimport { ZEN_GRID_CONFIG } from '../services/zen-grid-config.token';\n\n@Component({\n selector: 'zen-grid',\n standalone: true,\n template: `\n @if (_isBrowser) {\n <div #gridContainer class=\"zen-grid-container\"></div>\n } @else {\n <div class=\"zen-grid-placeholder\" [style.height.px]=\"placeholderHeight\"></div>\n }\n <div style=\"display:none\">\n <ng-content></ng-content>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n position: relative;\n height: 100%;\n }\n .zen-grid-container {\n width: 100%;\n height: 100%;\n }\n .zen-grid-placeholder {\n width: 100%;\n background: #f5f5f5;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZenGridComponent {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n private readonly templateBridge = inject(TemplateBridgeService);\n private readonly globalConfig = inject(ZEN_GRID_CONFIG, { optional: true });\n\n readonly _isBrowser = isPlatformBrowser(this.platformId);\n\n get placeholderHeight(): number {\n const rowHeight = this.getResolvedRowHeight();\n const height = typeof rowHeight === 'number' ? rowHeight : 30;\n return this.rowCount() * height;\n }\n\n private readonly gridContainerRef = viewChild<ElementRef<HTMLElement>>('gridContainer');\n private readonly columnChildren = contentChildren(ZenColumnComponent);\n\n private grid: Grid | null = null;\n private gridReady = false;\n private warnedOnLegacyBackendCallbacks = false;\n private readonly explicitInputs = new Set<'rowHeight' | 'colWidth' | 'columns'>();\n private pendingModelDataSync: any[][] | null = null;\n\n // Legacy sort/filter backend callbacks are kept as wrapper inputs for\n // template compatibility, but the unified core contract only supports\n // onDataRequest.\n private static readonly legacyBackendCallbackWarning =\n '[zen-grid] onSortRequest/onFilterRequest are deprecated. Use onDataRequest with the unified query contract instead.';\n\n // --- Core Inputs ---\n readonly rowCount = input.required<number>();\n readonly colCount = input.required<number>();\n readonly rowHeight = input<number | number[], number | number[]>(30, {\n transform: (value: number | number[]) => this.markExplicitInput('rowHeight', value),\n });\n readonly colWidth = input<number | number[], number | number[]>(100, {\n transform: (value: number | number[]) => this.markExplicitInput('colWidth', value),\n });\n readonly columns = input<ColumnDef[], ColumnDef[]>([], {\n transform: (value: ColumnDef[]) => this.markExplicitInput('columns', value),\n });\n\n // --- Feature Inputs ---\n readonly enableSelection = input<boolean | undefined>(undefined);\n readonly enableMultiSelection = input<boolean | undefined>(undefined);\n readonly selectionType = input<'cell' | 'row' | 'column' | 'range' | undefined>(undefined);\n readonly enableColumnResize = input<boolean | undefined>(undefined);\n readonly enableColumnDrag = input<boolean | undefined>(undefined);\n readonly enableKeyboardNavigation = input<boolean | undefined>(undefined);\n readonly enableA11y = input<boolean | undefined>(undefined);\n readonly enableCellPooling = input<boolean | undefined>(undefined);\n\n // --- Mode Inputs ---\n readonly dataMode = input<OperationMode | undefined>(undefined);\n readonly sortMode = input<OperationMode | undefined>(undefined);\n readonly filterMode = input<OperationMode | undefined>(undefined);\n\n // --- Backend Callback Inputs ---\n readonly onDataRequest = input<GridOptions['onDataRequest']>(undefined);\n readonly onSortRequest = input<((request: unknown) => Promise<unknown>) | undefined>(undefined);\n readonly onFilterRequest = input<((request: unknown) => Promise<unknown>) | undefined>(undefined);\n readonly onLoadMoreRows = input<GridOptions['onLoadMoreRows']>(undefined);\n\n // --- Config Object Inputs ---\n readonly pagination = input<PaginationConfig | undefined>(undefined);\n readonly loading = input<LoadingConfig | undefined>(undefined);\n readonly infiniteScrolling = input<GridOptions['infiniteScrolling']>(undefined);\n readonly rowHeightMode = input<'fixed' | 'auto' | 'content-aware' | undefined>(undefined);\n readonly rowHeightConfig = input<RowHeightConfig | undefined>(undefined);\n readonly columnResize = input<GridOptions['columnResize']>(undefined);\n readonly columnDrag = input<GridOptions['columnDrag']>(undefined);\n readonly cellOverflow = input<CellOverflowConfig | undefined>(undefined);\n readonly autoResize = input<boolean | undefined>(undefined);\n readonly overscanRows = input<number | undefined>(undefined);\n readonly overscanCols = input<number | undefined>(undefined);\n readonly sortIcons = input<SortIcons | undefined>(undefined);\n readonly rendererCache = input<RendererCacheConfig | undefined>(undefined);\n\n // --- Callback Inputs (GridOptions event callbacks) ---\n readonly onScrollCallback = input<GridOptions['onScroll']>(undefined);\n readonly onCellClickCallback = input<GridOptions['onCellClick']>(undefined);\n readonly onCellDoubleClickCallback = input<GridOptions['onCellDoubleClick']>(undefined);\n readonly onCellContextMenuCallback = input<GridOptions['onCellContextMenu']>(undefined);\n readonly onSelectionChangeCallback = input<GridOptions['onSelectionChange']>(undefined);\n readonly onPageChangeCallback = input<GridOptions['onPageChange']>(undefined);\n readonly onColumnWidthsChangeCallback = input<GridOptions['onColumnWidthsChange']>(undefined);\n\n // --- Plugin Input ---\n readonly plugins = input<GridPlugin[]>([]);\n\n // --- Two-way Model Signals ---\n readonly data = model<any[][]>([]);\n readonly selection = model<CellRange[]>([]);\n readonly sortState = model<SortState[]>([]);\n readonly filterState = model<FilterModel[]>([]);\n readonly currentPage = model<number>(1);\n\n // --- Cell Events ---\n readonly cellClick = output<GridEvents['cell:click']>();\n readonly cellDoubleClick = output<GridEvents['cell:doubleClick']>();\n readonly cellContextMenu = output<GridEvents['cell:contextMenu']>();\n readonly cellChange = output<GridEvents['cell:change']>();\n readonly cellBeforeChange = output<GridEvents['cell:beforeChange']>();\n readonly cellAfterChange = output<GridEvents['cell:afterChange']>();\n\n // --- Selection Events ---\n readonly selectionChangeEvent = output<GridEvents['selection:change']>({ alias: 'selectionChanged' });\n readonly selectionStart = output<GridEvents['selection:start']>();\n readonly selectionEnd = output<GridEvents['selection:end']>();\n\n // --- Editing Events ---\n readonly editStart = output<GridEvents['edit:start']>();\n readonly editEnd = output<GridEvents['edit:end']>();\n readonly editCommit = output<GridEvents['edit:commit']>();\n readonly editCancel = output<GridEvents['edit:cancel']>();\n\n // --- Scroll Events ---\n readonly scroll = output<GridEvents['scroll']>();\n readonly scrollStart = output<GridEvents['scroll:start']>();\n readonly scrollEnd = output<GridEvents['scroll:end']>();\n\n // --- Sort Events ---\n readonly sortChange = output<GridEvents['sort:change']>();\n readonly sortBeforeSort = output<GridEvents['sort:beforeSort']>();\n readonly sortAfterSort = output<GridEvents['sort:afterSort']>();\n\n // --- Filter Events ---\n readonly filterChange = output<GridEvents['filter:change']>();\n readonly filterBeforeFilter = output<GridEvents['filter:beforeFilter']>();\n readonly filterAfterFilter = output<GridEvents['filter:afterFilter']>();\n readonly filterExport = output<GridEvents['filter:export']>();\n readonly filterStart = output<GridEvents['filter:start']>();\n readonly filterEnd = output<GridEvents['filter:end']>();\n readonly filterError = output<GridEvents['filter:error']>();\n readonly filterClear = output<GridEvents['filter:clear']>();\n\n // --- Focus Events ---\n readonly focusChange = output<GridEvents['focus:change']>();\n readonly focusIn = output<GridEvents['focus:in']>();\n readonly focusOut = output<GridEvents['focus:out']>();\n\n // --- Keyboard Events ---\n readonly keyDown = output<GridEvents['key:down']>();\n readonly keyUp = output<GridEvents['key:up']>();\n readonly keyPress = output<GridEvents['key:press']>();\n\n // --- Column Events ---\n readonly columnResizeEvent = output<GridEvents['column:resize']>({ alias: 'columnResize' });\n readonly columnMove = output<GridEvents['column:move']>();\n readonly columnHide = output<GridEvents['column:hide']>();\n readonly columnShow = output<GridEvents['column:show']>();\n readonly columnDragStart = output<GridEvents['column:dragStart']>();\n readonly columnDragEvent = output<GridEvents['column:drag']>({ alias: 'columnDrag' });\n readonly columnDragEnd = output<GridEvents['column:dragEnd']>();\n readonly columnDragCancel = output<GridEvents['column:dragCancel']>();\n\n // --- Header Events ---\n readonly headerClick = output<GridEvents['header:click']>();\n readonly headerDoubleClick = output<GridEvents['header:doubleClick']>();\n readonly headerContextMenu = output<GridEvents['header:contextMenu']>();\n readonly headerHover = output<GridEvents['header:hover']>();\n readonly headerSortClick = output<GridEvents['header:sort:click']>();\n readonly headerFilterClick = output<GridEvents['header:filter:click']>();\n readonly headerCheckboxChange = output<GridEvents['header:checkbox:change']>();\n\n // --- Lifecycle Events ---\n readonly renderStart = output<GridEvents['render:start']>();\n readonly renderEnd = output<GridEvents['render:end']>();\n readonly dataLoad = output<GridEvents['data:load']>();\n readonly dataChange = output<GridEvents['data:change']>();\n readonly loadingStart = output<GridEvents['loading:start']>();\n readonly loadingEnd = output<GridEvents['loading:end']>();\n readonly loadingProgress = output<GridEvents['loading:progress']>();\n readonly undoRedoChange = output<GridEvents['undo-redo:change']>();\n readonly gridDestroy = output<GridEvents['destroy']>();\n readonly gridError = output<GridEvents['error']>();\n readonly gridWarning = output<GridEvents['warning']>();\n\n // --- Row Events ---\n readonly rowInsert = output<GridEvents['row:insert']>();\n readonly rowDelete = output<GridEvents['row:delete']>();\n readonly rowMove = output<GridEvents['row:move']>();\n\n // --- Clipboard Events ---\n readonly copy = output<GridEvents['copy']>();\n readonly cut = output<GridEvents['cut']>();\n readonly paste = output<GridEvents['paste']>();\n\n private outputMap: Record<string, OutputEmitterRef<any>> = {};\n private eventHandlers: Array<{ event: string; handler: (payload: any) => void }> = [];\n\n constructor() {\n this.buildOutputMap();\n\n this.destroyRef.onDestroy(() => {\n if (this.grid) {\n for (const { event, handler } of this.eventHandlers) {\n this.grid.off(event as any, handler);\n }\n this.grid.destroy();\n this.grid = null;\n }\n this.eventHandlers = [];\n this.gridReady = false;\n this.templateBridge.destroyAll();\n });\n\n afterNextRender(() => {\n this.ngZone.runOutsideAngular(() => {\n this.initGrid();\n });\n });\n\n // Sync data input → grid (skip first run, initGrid handles initial data)\n effect(() => {\n const data = this.data();\n if (!this.gridReady || this.getResolvedDataMode() !== 'frontend') return;\n if (!Array.isArray(data)) return;\n\n if (this.pendingModelDataSync === data) {\n this.pendingModelDataSync = null;\n return;\n }\n\n this.grid!.setData(data);\n });\n\n // Sync columns from content children or input (skip first run)\n effect(() => {\n this.columnChildren();\n this.columns();\n if (!this.gridReady) return;\n\n const resolvedColumns = this.getComponentColumns();\n if (resolvedColumns !== undefined) {\n this.grid!.updateOptions({ columns: resolvedColumns });\n }\n });\n\n // Sync option changes with previous-value diffing (only sends changed values)\n const prevOptions: Record<string, any> = {};\n effect(() => {\n const current: Array<[string, any]> = [\n ['rowHeight', this.getResolvedRowHeight()],\n ['colWidth', this.getResolvedColWidth()],\n ['selectionType', this.selectionType()],\n ['enableSelection', this.enableSelection()],\n ['enableMultiSelection', this.enableMultiSelection()],\n ['enableKeyboardNavigation', this.enableKeyboardNavigation()],\n ['enableA11y', this.enableA11y()],\n ['enableColumnResize', this.enableColumnResize()],\n ['enableColumnDrag', this.enableColumnDrag()],\n ['dataMode', this.getRequestedDataMode()],\n ['pagination', this.pagination()],\n ['loading', this.loading()],\n ['infiniteScrolling', this.infiniteScrolling()],\n ['rowHeightMode', this.rowHeightMode()],\n ['rowHeightConfig', this.rowHeightConfig()],\n ['columnResize', this.columnResize()],\n ['columnDrag', this.columnDrag()],\n ['cellOverflow', this.cellOverflow()],\n ['autoResize', this.autoResize()],\n ['overscanRows', this.overscanRows()],\n ['overscanCols', this.overscanCols()],\n ];\n\n if (!this.gridReady) {\n // Store initial values for diffing on next run\n for (const [key, val] of current) {\n prevOptions[key] = val;\n }\n return;\n }\n\n const changed: Partial<GridOptions> = {};\n let hasChanges = false;\n\n for (const [key, val] of current) {\n if (val !== undefined && val !== prevOptions[key]) {\n (changed as any)[key] = val;\n hasChanges = true;\n }\n prevOptions[key] = val;\n }\n\n if (hasChanges) {\n this.grid!.updateOptions(changed);\n }\n });\n }\n\n private markExplicitInput<T>(name: 'rowHeight' | 'colWidth' | 'columns', value: T): T {\n this.explicitInputs.add(name);\n return value;\n }\n\n private hasExplicitInput(name: 'rowHeight' | 'colWidth' | 'columns'): boolean {\n return this.explicitInputs.has(name);\n }\n\n private getResolvedDataMode(): 'frontend' | 'backend' {\n return resolveOperationMode(\n {\n mode: this.getRequestedDataMode(),\n callback:\n this.onDataRequest() ??\n (this.globalConfig?.['onDataRequest'] as GridOptions['onDataRequest'] | undefined),\n },\n { rowCount: this.rowCount() }\n );\n }\n\n private getRequestedDataMode(): OperationMode | undefined {\n const configuredDataMode = this.dataMode() ?? (this.globalConfig?.['dataMode'] as OperationMode | undefined);\n if (configuredDataMode !== undefined) {\n return configuredDataMode;\n }\n\n const legacyModes = [\n this.sortMode(),\n this.filterMode(),\n this.globalConfig?.['sortMode'] as OperationMode | undefined,\n this.globalConfig?.['filterMode'] as OperationMode | undefined,\n ].filter((mode): mode is OperationMode => mode !== undefined);\n\n if (legacyModes.includes('backend')) return 'backend';\n if (legacyModes.includes('auto')) return 'auto';\n if (legacyModes.includes('frontend')) return 'frontend';\n\n return undefined;\n }\n\n private warnOnLegacyBackendCallbacks(): void {\n if (this.warnedOnLegacyBackendCallbacks) return;\n\n const hasLegacyCallback =\n this.onSortRequest() !== undefined ||\n this.onFilterRequest() !== undefined ||\n this.globalConfig?.['onSortRequest'] !== undefined ||\n this.globalConfig?.['onFilterRequest'] !== undefined;\n\n if (!hasLegacyCallback) return;\n\n this.warnedOnLegacyBackendCallbacks = true;\n console.warn(ZenGridComponent.legacyBackendCallbackWarning);\n }\n\n private getResolvedRowHeight(): number | number[] {\n const configured = this.globalConfig?.['rowHeight'] as GridOptions['rowHeight'] | undefined;\n return this.hasExplicitInput('rowHeight') || configured === undefined ? this.rowHeight() : configured;\n }\n\n private getResolvedColWidth(): number | number[] {\n const configured = this.globalConfig?.['colWidth'] as GridOptions['colWidth'] | undefined;\n return this.hasExplicitInput('colWidth') || configured === undefined ? this.colWidth() : configured;\n }\n\n private getComponentColumns(): ColumnDef[] | undefined {\n const columnChildren = this.columnChildren();\n if (columnChildren.length > 0) {\n return columnChildren.map(c => c.toColumnDef(this.templateBridge));\n }\n\n const inputColumns = this.columns();\n if (this.hasExplicitInput('columns') || inputColumns.length > 0) {\n return inputColumns;\n }\n\n return undefined;\n }\n\n private buildOutputMap(): void {\n this.outputMap = {\n cellClick: this.cellClick,\n cellDoubleClick: this.cellDoubleClick,\n cellContextMenu: this.cellContextMenu,\n cellChange: this.cellChange,\n cellBeforeChange: this.cellBeforeChange,\n cellAfterChange: this.cellAfterChange,\n selectionChange: this.selectionChangeEvent,\n selectionStart: this.selectionStart,\n selectionEnd: this.selectionEnd,\n editStart: this.editStart,\n editEnd: this.editEnd,\n editCommit: this.editCommit,\n editCancel: this.editCancel,\n scroll: this.scroll,\n scrollStart: this.scrollStart,\n scrollEnd: this.scrollEnd,\n sortChange: this.sortChange,\n sortBeforeSort: this.sortBeforeSort,\n sortAfterSort: this.sortAfterSort,\n filterChange: this.filterChange,\n filterBeforeFilter: this.filterBeforeFilter,\n filterAfterFilter: this.filterAfterFilter,\n filterExport: this.filterExport,\n filterStart: this.filterStart,\n filterEnd: this.filterEnd,\n filterError: this.filterError,\n filterClear: this.filterClear,\n focusChange: this.focusChange,\n focusIn: this.focusIn,\n focusOut: this.focusOut,\n keyDown: this.keyDown,\n keyUp: this.keyUp,\n keyPress: this.keyPress,\n columnResize: this.columnResizeEvent,\n columnMove: this.columnMove,\n columnHide: this.columnHide,\n columnShow: this.columnShow,\n columnDragStart: this.columnDragStart,\n columnDrag: this.columnDragEvent,\n columnDragEnd: this.columnDragEnd,\n columnDragCancel: this.columnDragCancel,\n headerClick: this.headerClick,\n headerDoubleClick: this.headerDoubleClick,\n headerContextMenu: this.headerContextMenu,\n headerHover: this.headerHover,\n headerSortClick: this.headerSortClick,\n headerFilterClick: this.headerFilterClick,\n headerCheckboxChange: this.headerCheckboxChange,\n renderStart: this.renderStart,\n renderEnd: this.renderEnd,\n dataLoad: this.dataLoad,\n dataChange: this.dataChange,\n loadingStart: this.loadingStart,\n loadingEnd: this.loadingEnd,\n loadingProgress: this.loadingProgress,\n undoRedoChange: this.undoRedoChange,\n gridDestroy: this.gridDestroy,\n gridError: this.gridError,\n gridWarning: this.gridWarning,\n rowInsert: this.rowInsert,\n rowDelete: this.rowDelete,\n rowMove: this.rowMove,\n copy: this.copy,\n cut: this.cut,\n paste: this.paste,\n };\n }\n\n private initGrid(): void {\n const containerRef = this.gridContainerRef();\n if (!containerRef) return;\n\n const container = containerRef.nativeElement;\n const dataValue = this.data();\n const componentColumns = this.getComponentColumns();\n const resolvedDataMode = this.getResolvedDataMode();\n\n this.warnOnLegacyBackendCallbacks();\n\n const options: GridOptions = {\n ...(this.globalConfig ?? {}),\n rowCount: this.rowCount(),\n colCount: this.colCount(),\n ...this.getOptionalOptions(),\n rowHeight: this.getResolvedRowHeight(),\n colWidth: this.getResolvedColWidth(),\n ...(componentColumns !== undefined ? { columns: componentColumns } : {}),\n };\n\n this.grid = new Grid(container, options);\n\n // Wire up events\n this.wireEvents();\n\n // Frontend mode owns the in-memory dataset, including an explicit empty array.\n if (resolvedDataMode === 'frontend' && Array.isArray(dataValue)) {\n this.grid.setData(dataValue);\n }\n\n // Install plugins\n const pluginList = this.plugins();\n for (const plugin of pluginList) {\n this.grid.usePlugin(plugin);\n }\n\n this.grid.render();\n this.gridReady = true;\n }\n\n private getOptionalOptions(): Partial<GridOptions> {\n const opts: Partial<GridOptions> = {};\n\n const enSel = this.enableSelection();\n const enMulti = this.enableMultiSelection();\n const selType = this.selectionType();\n const enKb = this.enableKeyboardNavigation();\n const enA11y = this.enableA11y();\n const enPool = this.enableCellPooling();\n const enResize = this.enableColumnResize();\n const enDrag = this.enableColumnDrag();\n const dMode = this.getRequestedDataMode();\n const dReq = this.onDataRequest();\n const loadMore = this.onLoadMoreRows();\n const pag = this.pagination();\n const load = this.loading();\n const infScroll = this.infiniteScrolling();\n const rhMode = this.rowHeightMode();\n const rhConfig = this.rowHeightConfig();\n const colResizeConf = this.columnResize();\n const colDragConf = this.columnDrag();\n const overflow = this.cellOverflow();\n const autoRes = this.autoResize();\n const oRows = this.overscanRows();\n const oCols = this.overscanCols();\n const sIcons = this.sortIcons();\n const rCache = this.rendererCache();\n const onScrollCb = this.onScrollCallback();\n const onCellClickCb = this.onCellClickCallback();\n const onCellDblClickCb = this.onCellDoubleClickCallback();\n const onCellCtxCb = this.onCellContextMenuCallback();\n const onSelChangeCb = this.onSelectionChangeCallback();\n const onPageChangeCb = this.onPageChangeCallback();\n const onColWidthsCb = this.onColumnWidthsChangeCallback();\n\n if (enSel !== undefined) opts.enableSelection = enSel;\n if (enMulti !== undefined) opts.enableMultiSelection = enMulti;\n if (selType !== undefined) opts.selectionType = selType;\n if (enKb !== undefined) opts.enableKeyboardNavigation = enKb;\n if (enA11y !== undefined) opts.enableA11y = enA11y;\n if (enPool !== undefined) opts.enableCellPooling = enPool;\n if (enResize !== undefined) opts.enableColumnResize = enResize;\n if (enDrag !== undefined) opts.enableColumnDrag = enDrag;\n if (dMode !== undefined) opts.dataMode = dMode;\n if (dReq !== undefined) opts.onDataRequest = dReq;\n if (loadMore !== undefined) opts.onLoadMoreRows = loadMore;\n if (pag !== undefined) opts.pagination = pag;\n if (load !== undefined) opts.loading = load;\n if (infScroll !== undefined) opts.infiniteScrolling = infScroll;\n if (rhMode !== undefined) opts.rowHeightMode = rhMode;\n if (rhConfig !== undefined) opts.rowHeightConfig = rhConfig;\n if (colResizeConf !== undefined) opts.columnResize = colResizeConf;\n if (colDragConf !== undefined) opts.columnDrag = colDragConf;\n if (overflow !== undefined) opts.cellOverflow = overflow;\n if (autoRes !== undefined) opts.autoResize = autoRes;\n if (oRows !== undefined) opts.overscanRows = oRows;\n if (oCols !== undefined) opts.overscanCols = oCols;\n if (sIcons !== undefined) opts.sortIcons = sIcons;\n if (rCache !== undefined) opts.rendererCache = rCache;\n if (onScrollCb !== undefined) opts.onScroll = onScrollCb;\n if (onCellClickCb !== undefined) opts.onCellClick = onCellClickCb;\n if (onCellDblClickCb !== undefined) opts.onCellDoubleClick = onCellDblClickCb;\n if (onCellCtxCb !== undefined) opts.onCellContextMenu = onCellCtxCb;\n if (onSelChangeCb !== undefined) opts.onSelectionChange = onSelChangeCb;\n if (onPageChangeCb !== undefined) opts.onPageChange = onPageChangeCb;\n if (onColWidthsCb !== undefined) opts.onColumnWidthsChange = onColWidthsCb;\n\n return opts;\n }\n\n private wireEvents(): void {\n if (!this.grid) return;\n\n for (const [gridEvent, outputName] of Object.entries(EVENT_MAP)) {\n const outputRef = this.outputMap[outputName];\n if (!outputRef) continue;\n\n const handler = (payload: any) => {\n this.ngZone.run(() => {\n outputRef.emit(payload);\n\n // Update two-way model signals for specific events\n if (gridEvent === 'selection:change' && payload?.ranges) {\n this.selection.set(payload.ranges);\n } else if (gridEvent === 'sort:change' && payload?.sortState) {\n this.sortState.set(payload.sortState);\n } else if (gridEvent === 'filter:change' && payload?.filterState) {\n this.filterState.set(payload.filterState);\n } else if (gridEvent === 'data:change') {\n // data:change doesn't carry full data, skip model update\n }\n\n this.cdr.markForCheck();\n });\n };\n\n this.grid.on(gridEvent as any, handler);\n this.eventHandlers.push({ event: gridEvent, handler });\n }\n }\n\n // --- Public API Methods ---\n\n get gridInstance(): Grid | null {\n return this.grid;\n }\n\n render(): void {\n this.grid?.render();\n }\n\n refresh(): void {\n this.grid?.refresh();\n }\n\n clearCache(): void {\n this.grid?.clearCache();\n }\n\n updateCells(cells: CellRef[]): void {\n this.grid?.updateCells(cells);\n }\n\n setData(data: any[][]): void {\n if (this.getResolvedDataMode() === 'frontend') {\n if (this.grid) {\n this.pendingModelDataSync = data;\n this.grid.setData(data);\n }\n }\n\n this.data.set(data);\n }\n\n getData(row: number, col: number): any {\n return this.grid?.getData(row, col);\n }\n\n // --- Sort API ---\n sortColumn(column: number, direction: 'asc' | 'desc' | null = 'asc'): void {\n if (direction === null) this.grid?.sort.clear();\n else this.grid?.sort.apply([{ column, direction }]);\n }\n\n toggleSort(column: number): void {\n this.grid?.sort.toggle(column);\n }\n\n getSortState(): SortState[] {\n return this.grid?.sort.getState() ?? [];\n }\n\n clearSort(): void {\n this.grid?.sort.clear();\n }\n\n setSortState(sortState: SortState[]): void {\n this.grid?.sort.setState(sortState);\n }\n\n // --- Filter API ---\n setFilter(column: number, operator: string, value: any): void {\n this.grid?.filter.set(column, operator, value);\n }\n\n setColumnFilter(\n column: number,\n conditions: Array<{ operator: string; value: any }>,\n logic: 'AND' | 'OR' = 'AND'\n ): void {\n this.grid?.filter.setColumn(column, conditions, logic);\n }\n\n getFilterState(): FilterModel[] {\n return this.grid?.filter.getState() ?? [];\n }\n\n setFilterState(models: FilterModel[]): void {\n this.grid?.filter.setState(models);\n }\n\n clearFilters(): void {\n this.grid?.filter.clear();\n }\n\n clearColumnFilter(column: number): void {\n this.grid?.filter.clearColumn(column);\n }\n\n setQuickFilter(query: string, columns?: number[]): void {\n this.grid?.filter.setQuick(query, columns);\n }\n\n clearQuickFilter(): void {\n this.grid?.filter.clearQuick();\n }\n\n // --- Export API ---\n exportCSV(options: GridExportOptions = {}): string {\n return this.grid?.export.csv(options) ?? '';\n }\n\n exportTSV(options: GridExportOptions = {}): string {\n return this.grid?.export.tsv(options) ?? '';\n }\n\n // --- Pagination API ---\n goToPage(page: number): void {\n this.grid?.pagination.goTo(page);\n this.currentPage.set(page);\n }\n\n nextPage(): void {\n this.grid?.pagination.next();\n this.currentPage.set(this.grid?.pagination.getCurrentPage() ?? 1);\n }\n\n previousPage(): void {\n this.grid?.pagination.previous();\n this.currentPage.set(this.grid?.pagination.getCurrentPage() ?? 1);\n }\n\n setPageSize(pageSize: number): void {\n this.grid?.pagination.setPageSize(pageSize);\n }\n\n getCurrentPage(): number {\n return this.grid?.pagination.getCurrentPage() ?? 1;\n }\n\n getPageSize(): number {\n return this.grid?.pagination.getPageSize() ?? 0;\n }\n\n getTotalPages(): number {\n return this.grid?.pagination.getTotalPages() ?? 0;\n }\n\n // --- Column API ---\n resizeColumn(col: number, width: number): void {\n this.grid?.resizeColumn(col, width);\n }\n\n autoFitColumn(col: number): void {\n this.grid?.autoFitColumn(col);\n }\n\n autoFitAllColumns(): void {\n this.grid?.autoFitAllColumns();\n }\n\n setColumnConstraints(col: number, constraints: ColumnConstraints): void {\n this.grid?.setColumnConstraints(col, constraints);\n }\n\n // --- State Persistence API ---\n getColumnState(): ColumnStateSnapshot[] {\n return this.grid?.getColumnState() ?? [];\n }\n\n applyColumnState(\n state: ColumnStateSnapshot[],\n options?: { applyWidth?: boolean; applyVisibility?: boolean; applyOrder?: boolean }\n ): void {\n this.grid?.applyColumnState(state, options);\n }\n\n getStateSnapshot(): GridStateSnapshot | null {\n return this.grid?.getStateSnapshot() ?? null;\n }\n\n applyStateSnapshot(snapshot: GridStateSnapshot): void {\n this.grid?.applyStateSnapshot(snapshot);\n }\n\n // --- Scroll API ---\n scrollToCell(row: number, col: number): void {\n this.grid?.scrollToCell(row, col);\n }\n\n getScrollPosition(): { top: number; left: number } {\n return this.grid?.getScrollPosition() ?? { top: 0, left: 0 };\n }\n\n getVisibleRange(): VisibleRange | null {\n return this.grid?.getVisibleRange() ?? null;\n }\n\n // --- Header API ---\n registerHeaderRenderer(name: string, renderer: HeaderRenderer): void {\n this.grid?.registerHeaderRenderer(name, renderer);\n }\n\n updateHeader(columnIndex: number): void {\n this.grid?.updateHeader(columnIndex);\n }\n\n updateAllHeaders(): void {\n this.grid?.updateAllHeaders();\n }\n\n // --- Plugin API ---\n usePlugin(plugin: GridPlugin): void {\n this.grid?.usePlugin(plugin);\n }\n\n // --- Stats ---\n getStats(): any {\n return this.grid?.getStats();\n }\n\n getDimensions(): { width: number; height: number } {\n return this.grid?.getDimensions() ?? { width: 0, height: 0 };\n }\n\n getColumnPosition(col: number): { x: number; width: number } {\n return this.grid?.getColumnPosition(col) ?? { x: 0, width: 0 };\n }\n\n // --- Data Mode ---\n getDataMode(): 'frontend' | 'backend' {\n return this.grid?.getDataMode() ?? 'frontend';\n }\n\n // --- Sort (missing methods) ---\n getColumnSort(column: number): any {\n return this.grid?.getColumnSort(column);\n }\n\n getSortIcons(): { asc: string; desc: string } {\n return this.grid?.getSortIcons() ?? { asc: '▲', desc: '▼' };\n }\n\n getSortMode(): 'frontend' | 'backend' {\n return this.grid?.getSortMode() ?? 'frontend';\n }\n\n // --- Filter (missing methods) ---\n getFieldFilterState(): any {\n return this.grid?.getFieldFilterState();\n }\n\n getFilterExports(): any {\n return this.grid?.getFilterExports();\n }\n\n getFilterMode(): 'frontend' | 'backend' {\n return this.grid?.getFilterMode() ?? 'frontend';\n }\n\n getQuickFilter(): { query: string; columns: number[] | null } {\n return this.grid?.getQuickFilter() ?? { query: '', columns: null };\n }\n\n // --- Pagination (missing methods) ---\n firstPage(): void {\n this.grid?.firstPage();\n this.currentPage.set(this.grid?.getCurrentPage() ?? 1);\n }\n\n lastPage(): void {\n this.grid?.lastPage();\n this.currentPage.set(this.grid?.getCurrentPage() ?? 1);\n }\n\n // --- Scroll (missing methods) ---\n scrollThroughCells(\n cells: Array<{ row: number; col: number }>,\n options?: {\n delayMs?: number;\n smooth?: boolean;\n onCellReached?: (cell: { row: number; col: number }, index: number) => void;\n }\n ): { promise: Promise<void>; abort: () => void } {\n return this.grid?.scrollThroughCells(cells, options) ?? {\n promise: Promise.resolve(),\n abort: () => {},\n };\n }\n\n // --- Column Resize/Drag (missing methods) ---\n attachColumnResize(headerElement: HTMLElement): void {\n this.grid?.attachColumnResize(headerElement);\n }\n\n detachColumnResize(): void {\n this.grid?.detachColumnResize();\n }\n\n updateColumnResizeHandles(): void {\n this.grid?.updateColumnResizeHandles();\n }\n\n attachColumnDrag(headerElement: HTMLElement): void {\n this.grid?.attachColumnDrag(headerElement);\n }\n\n detachColumnDrag(): void {\n this.grid?.detachColumnDrag();\n }\n\n isDragging(): boolean {\n return this.grid?.isDragging() ?? false;\n }\n\n // --- Renderer Registration ---\n registerRenderer(name: string, renderer: any): void {\n this.grid?.registerRenderer(name, renderer);\n }\n\n // --- Options Update ---\n updateOptions(options: Partial<GridOptions>): void {\n this.grid?.updateOptions(options);\n }\n\n // --- Header (missing methods) ---\n refreshHeaders(): void {\n this.grid?.refreshHeaders();\n }\n\n // --- Infinite Scroll ---\n resetInfiniteScrolling(): void {\n this.grid?.resetInfiniteScrolling();\n }\n\n getSlidingWindowStats(): any {\n return this.grid?.getSlidingWindowStats();\n }\n\n // --- Plugin System (advanced) ---\n getStore(): any {\n return this.grid?.getStore();\n }\n\n getPluginHost(): PluginHost | null {\n return this.grid?.getPluginHost() ?? null;\n }\n\n getGridApi(): GridApiImpl | null {\n return this.grid?.getGridApi() ?? null;\n }\n\n}\n","import { Directive, forwardRef, inject } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\nimport { ZenGridComponent } from '../components/zen-grid.component';\n\n@Directive({\n selector: 'zen-grid[formControl],zen-grid[formControlName],zen-grid[ngModel]',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZenGridValueAccessorDirective),\n multi: true,\n },\n ],\n})\nexport class ZenGridValueAccessorDirective implements ControlValueAccessor {\n private readonly grid = inject(ZenGridComponent);\n private onChange: (value: any[][]) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n this.grid.dataChange.subscribe(() => {\n this.onChange(this.grid.data());\n this.onTouched();\n });\n }\n\n writeValue(value: any[][]): void {\n if (value) {\n this.grid.setData(value);\n }\n }\n\n registerOnChange(fn: (value: any[][]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import { Injector } from '@angular/core';\nimport type { GridPlugin, GridStore, GridApiInterface, PluginDisposable } from '@zengrid/core';\n\nexport class AngularPluginWrapper implements GridPlugin {\n readonly name: string;\n readonly phase: number;\n readonly dependencies?: string[];\n\n constructor(\n private readonly injector: Injector,\n private readonly pluginFactory: (injector: Injector) => GridPlugin,\n ) {\n const plugin = this.pluginFactory(this.injector);\n this.name = plugin.name;\n this.phase = plugin.phase;\n this.dependencies = plugin.dependencies;\n }\n\n setup(store: GridStore, api: GridApiInterface): PluginDisposable | void {\n const plugin = this.pluginFactory(this.injector);\n return plugin.setup(store, api);\n }\n\n dispose(): void {\n // Plugin cleanup handled by PluginHost\n }\n}\n\nexport function createAngularPlugin(\n injector: Injector,\n factory: (injector: Injector) => GridPlugin,\n): GridPlugin {\n return new AngularPluginWrapper(injector, factory);\n}\n","import { signal, type Signal, type WritableSignal } from '@angular/core';\nimport type { GridStore } from '@zengrid/core';\n\nexport function bridgeStoreSignal<T>(store: GridStore, key: string): Signal<T> {\n const angularSignal: WritableSignal<T> = signal(store.get(key) as T);\n\n store.effect(\n `angular-bridge:${key}`,\n () => {\n const value = store.get(key) as T;\n angularSignal.set(value);\n },\n 'angular-bridge'\n );\n\n return angularSignal.asReadonly();\n}\n","// Components\nexport { ZenGridComponent } from './lib/components/zen-grid.component';\nexport { ZenColumnComponent } from './lib/components/zen-column.component';\n\n// Directives\nexport { ZenCellTemplateDirective } from './lib/directives/zen-cell-template.directive';\nexport { ZenEditorTemplateDirective } from './lib/directives/zen-editor-template.directive';\nexport { ZenHeaderTemplateDirective } from './lib/directives/zen-header-template.directive';\nexport { ZenGridValueAccessorDirective } from './lib/directives/zen-grid-value-accessor.directive';\n\n// Services\nexport { TemplateBridgeService } from './lib/services/template-bridge.service';\nexport { ZEN_GRID_CONFIG, provideZenGrid } from './lib/services/zen-grid-config.token';\n\n// Angular Plugins\nexport { AngularPluginWrapper, createAngularPlugin } from './lib/plugins/angular-plugin-wrapper';\n\n// Utils\nexport { EVENT_MAP } from './lib/utils/event-map';\nexport { bridgeStoreSignal } from './lib/utils/signal-bridge';\n\n// Angular-specific Types\nexport type {\n ZenCellTemplateContext,\n ZenEditorTemplateContext,\n ZenHeaderTemplateContext,\n ZenGridConfig,\n RendererInput,\n EditorInput,\n HeaderRendererInput,\n} from './lib/types';\n\n// ─── Re-export Core Types ───────────────────────────────────────────────────\n\nexport type {\n CellRef,\n CellRange,\n CellPosition,\n ColumnDef,\n GridOptions,\n GridState,\n GridStateSnapshot,\n ColumnStateSnapshot,\n GridExportOptions,\n SavedFilterPreset,\n GridEvents,\n SortState,\n FilterModel,\n RenderParams,\n EditorParams,\n HeaderRenderParams,\n GridPlugin,\n GridStore,\n GridApiInterface,\n CellRenderer,\n CellEditor,\n HeaderRenderer,\n} from './lib/types';\n\n// ─── Re-export Core Renderers ───────────────────────────────────────────────\n\nexport {\n // Standard renderers\n TextRenderer,\n NumberRenderer,\n ImageRenderer,\n AdvancedCellRenderer,\n // Interactive renderers\n CheckboxRenderer,\n ProgressBarRenderer,\n ButtonRenderer,\n LinkRenderer,\n ChipRenderer,\n SelectRenderer,\n DropdownRenderer,\n // Date renderers\n DateRenderer,\n DateRangeRenderer,\n // DateTime suite renderers\n DatePickerRenderer,\n createDatePickerRenderer,\n TimePickerRenderer,\n createTimePickerRenderer,\n DateTimePickerRenderer,\n createDateTimePickerRenderer,\n TimeRenderer,\n createTimeRenderer,\n DateTimeRenderer,\n createDateTimeRenderer,\n // Renderer infrastructure\n RendererRegistry,\n} from '@zengrid/core';\n\nexport type {\n NumberRendererOptions,\n ImageRendererOptions,\n AdvancedCellRendererOptions,\n CompositeElement,\n ConditionalStyle,\n CheckboxRendererOptions,\n ProgressBarRendererOptions,\n LinkRendererOptions,\n ButtonRendererOptions,\n ChipRendererOptions,\n Chip,\n SelectRendererOptions,\n SelectOption,\n DropdownRendererOptions,\n DateRendererOptions,\n DateRangeRendererOptions,\n DatePickerRendererOptions,\n TimePickerRendererOptions,\n DateTimePickerRendererOptions,\n TimeRendererOptions,\n DateTimeRendererOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Core Header Renderers ────────────────────────────────────────\n\nexport {\n TextHeaderRenderer,\n SortableHeaderRenderer,\n FilterableHeaderRenderer,\n CheckboxHeaderRenderer,\n IconHeaderRenderer,\n} from '@zengrid/core';\n\nexport type { ResolvedHeaderConfig } from '@zengrid/core';\n\n// ─── Re-export Core Editors ─────────────────────────────────────────────────\n\nexport {\n TextEditor,\n CheckboxEditor,\n DropdownEditor,\n DateEditor,\n DateRangeEditor,\n TimeEditor,\n DateTimeEditor,\n EditorManager,\n} from '@zengrid/core';\n\nexport type {\n TextEditorOptions,\n CheckboxEditorOptions,\n DropdownEditorOptions,\n DropdownOption,\n DateEditorOptions,\n DateRangeEditorOptions,\n TimeEditorOptions,\n DateTimeEditorOptions,\n EditorManagerOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Core Plugins ─────────────────────────────────────────────────\n\nexport {\n createCorePlugin,\n createSortPlugin,\n createFilterPlugin,\n createSelectionPlugin,\n createEditingPlugin,\n createUndoRedoPlugin,\n createDevToolsConnector,\n createAsyncSortPlugin,\n createAsyncFilterPlugin,\n createLifecyclePlugin,\n PluginHost,\n GridApiImpl,\n} from '@zengrid/core';\n\nexport type {\n CorePluginOptions,\n SortPluginOptions,\n FilterPluginOptions,\n SelectionPluginOptions,\n EditingPluginOptions,\n UndoRedoPluginOptions,\n DevToolsConnectorOptions,\n AsyncSortPluginOptions,\n AsyncFilterPluginOptions,\n LifecyclePluginOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Theming ──────────────────────────────────────────────────────\n\nexport {\n applyTheme,\n removeTheme,\n themeToCSSVariables,\n registerTheme,\n getTheme,\n hasTheme,\n listThemes,\n getAllThemes,\n unregisterTheme,\n ThemeBuilder,\n createTheme,\n lighten,\n darken,\n alpha,\n // Theme presets\n lightTheme,\n darkTheme,\n materialTheme,\n githubTheme,\n nordTheme,\n draculaTheme,\n oneDarkTheme,\n solarizedTheme,\n} from '@zengrid/core';\n\nexport type {\n ZenGridTheme,\n PartialTheme,\n ThemeColors,\n ThemeTypography,\n ThemeSpacing,\n ThemeBorders,\n ThemeShadows,\n ThemeTransitions,\n} from '@zengrid/core';\n\n// ─── Re-export Sorting ──────────────────────────────────────────────────────\n\nexport {\n SingleColumnSorter,\n MultiColumnSorter,\n SortStateManager,\n} from '@zengrid/core';\n\nexport type { SortOptions, NullPosition } from '@zengrid/core';\n\n// ─── Re-export Column Features ──────────────────────────────────────────────\n\nexport {\n ColumnModel,\n ColumnReorderPlugin,\n ColumnPinPlugin,\n ColumnVisibilityPlugin,\n ColumnResizeManager,\n AutoFitCalculator,\n ResizeHandleRenderer,\n ResizePreview,\n ColumnDragManager,\n DragVisualFeedback,\n DragKeyboardHandler,\n DragTouchHandler,\n ColumnDragCommand,\n ColumnGroupManager,\n ColumnGroupModel,\n ColumnGroupRenderer,\n createColumnGroupRenderer,\n} from '@zengrid/core';\n\nexport type {\n ColumnState,\n ColumnEvent,\n ColumnEventType,\n ColumnPinPosition,\n ColumnBatchUpdate,\n ColumnConstraints,\n ColumnResizeOptions,\n ResizeState,\n ResizeZoneResult,\n AutoFitCalculatorOptions,\n DragState,\n DragEvent,\n DropPosition,\n ColumnDragOptions,\n AutoScrollOptions,\n DragStateSnapshot,\n DropZoneResult,\n ColumnDragEvents,\n ColumnGroup,\n ColumnGroupModelConfig,\n ColumnGroupRenderParams,\n ColumnGroupRendererOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Viewport & Scroll ────────────────────────────────────────────\n\nexport {\n ScrollModel,\n ViewportModel,\n} from '@zengrid/core';\n\nexport type {\n ScrollState,\n ViewportState,\n ScrollEvent,\n ScrollEventType,\n ViewportEvent,\n ViewportEventType,\n} from '@zengrid/core';\n\n// ─── Re-export Selection Utilities ──────────────────────────────────────────\n\nexport {\n normalizeRange,\n mergeRanges,\n containsCell,\n rangesIntersect,\n createHitTester,\n} from '@zengrid/core';\n\n// ─── Re-export DateTime Utilities ───────────────────────────────────────────\n\nexport {\n setDatetimeTheme,\n setDatetimeThemeConfig,\n parseDate,\n parseTime,\n parseDateTime,\n formatDate,\n formatDateForDisplay,\n formatTime,\n formatDateTime,\n formatDateRange,\n isValidDate,\n isDateInRange,\n} from '@zengrid/core';\n\nexport type {\n DatetimeTheme,\n} from '@zengrid/core';\n\n// ─── Re-export Keyboard & Accessibility ─────────────────────────────────────\n\nexport {\n KeyboardNavigator,\n ARIAManager,\n FocusManager,\n} from '@zengrid/core';\n\nexport type {\n KeyboardNavigatorOptions,\n ARIAManagerOptions,\n FocusManagerOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Data & Utilities ─────────────────────────────────────────────\n\nexport {\n SparseMatrix,\n ColumnStore,\n createIndexMap,\n createIdentityIndexMap,\n ClipboardManager,\n CSVExporter,\n DependencyGraph,\n EventEmitter,\n GridStore as CoreGridStore,\n PipelineRegistry,\n} from '@zengrid/core';\n\nexport type {\n SparseMatrixOptions,\n ReadonlySparseMatrix,\n ColumnStoreOptions,\n ColumnDefinition,\n ColumnType,\n AggregateOperation,\n AggregationResult,\n IndexMap,\n IndexMapOptions,\n DataAccessor,\n StoreKeys,\n WrappedSignal,\n WrappedComputed,\n AsyncState,\n AsyncComputedOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Grid API Types ───────────────────────────────────────────────\n\nexport type {\n SortApi,\n FilterApi,\n PaginationApi,\n ColumnApi,\n ScrollApi,\n StateApi,\n ExportApi,\n} from '@zengrid/core';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zengrid-angular.mjs","sources":["../../../packages/angular/src/lib/utils/event-map.ts","../../../packages/angular/src/lib/directives/zen-cell-template.directive.ts","../../../packages/angular/src/lib/directives/zen-editor-template.directive.ts","../../../packages/angular/src/lib/directives/zen-header-template.directive.ts","../../../packages/angular/src/lib/components/zen-column.component.ts","../../../packages/angular/src/lib/services/template-bridge.service.ts","../../../packages/angular/src/lib/services/zen-grid-config.token.ts","../../../packages/angular/src/lib/components/zen-grid.component.ts","../../../packages/angular/src/lib/directives/zen-grid-value-accessor.directive.ts","../../../packages/angular/src/lib/plugins/angular-plugin-wrapper.ts","../../../packages/angular/src/lib/utils/signal-bridge.ts","../../../packages/angular/src/public-api.ts","../../../packages/angular/src/zengrid-angular.ts"],"sourcesContent":["export const EVENT_MAP: Record<string, string> = {\n // Cell events\n 'cell:click': 'cellClick',\n 'cell:doubleClick': 'cellDoubleClick',\n 'cell:contextMenu': 'cellContextMenu',\n 'cell:change': 'cellChange',\n 'cell:beforeChange': 'cellBeforeChange',\n 'cell:afterChange': 'cellAfterChange',\n\n // Selection events\n 'selection:change': 'selectionChange',\n 'selection:start': 'selectionStart',\n 'selection:end': 'selectionEnd',\n\n // Editing events\n 'edit:start': 'editStart',\n 'edit:end': 'editEnd',\n 'edit:commit': 'editCommit',\n 'edit:cancel': 'editCancel',\n\n // Scroll events\n 'scroll': 'scroll',\n 'scroll:start': 'scrollStart',\n 'scroll:end': 'scrollEnd',\n\n // Sort events\n 'sort:change': 'sortChange',\n 'sort:beforeSort': 'sortBeforeSort',\n 'sort:afterSort': 'sortAfterSort',\n\n // Filter events\n 'filter:change': 'filterChange',\n 'filter:beforeFilter': 'filterBeforeFilter',\n 'filter:afterFilter': 'filterAfterFilter',\n 'filter:export': 'filterExport',\n 'filter:start': 'filterStart',\n 'filter:end': 'filterEnd',\n 'filter:error': 'filterError',\n 'filter:clear': 'filterClear',\n\n // Focus events\n 'focus:change': 'focusChange',\n 'focus:in': 'focusIn',\n 'focus:out': 'focusOut',\n\n // Keyboard events\n 'key:down': 'keyDown',\n 'key:up': 'keyUp',\n 'key:press': 'keyPress',\n\n // Column events\n 'column:resize': 'columnResize',\n 'column:move': 'columnMove',\n 'column:hide': 'columnHide',\n 'column:show': 'columnShow',\n 'column:dragStart': 'columnDragStart',\n 'column:drag': 'columnDrag',\n 'column:dragEnd': 'columnDragEnd',\n 'column:dragCancel': 'columnDragCancel',\n\n // Header events\n 'header:click': 'headerClick',\n 'header:doubleClick': 'headerDoubleClick',\n 'header:contextMenu': 'headerContextMenu',\n 'header:hover': 'headerHover',\n 'header:sort:click': 'headerSortClick',\n 'header:filter:click': 'headerFilterClick',\n 'header:checkbox:change': 'headerCheckboxChange',\n\n // Lifecycle events\n 'render:start': 'renderStart',\n 'render:end': 'renderEnd',\n 'data:load': 'dataLoad',\n 'data:change': 'dataChange',\n 'loading:start': 'loadingStart',\n 'loading:end': 'loadingEnd',\n 'loading:progress': 'loadingProgress',\n\n // Undo/Redo events\n 'undo-redo:change': 'undoRedoChange',\n\n // Destroy\n 'destroy': 'gridDestroy',\n\n // Error events\n 'error': 'gridError',\n 'warning': 'gridWarning',\n\n // Row events\n 'row:insert': 'rowInsert',\n 'row:delete': 'rowDelete',\n 'row:move': 'rowMove',\n\n // Clipboard events\n 'copy': 'copy',\n 'cut': 'cut',\n 'paste': 'paste',\n};\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { ZenCellTemplateContext } from '../types';\n\n@Directive({\n selector: '[zenCellTemplate]',\n standalone: true,\n})\nexport class ZenCellTemplateDirective {\n readonly templateRef = inject(TemplateRef<ZenCellTemplateContext>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { ZenEditorTemplateContext } from '../types';\n\n@Directive({\n selector: '[zenEditorTemplate]',\n standalone: true,\n})\nexport class ZenEditorTemplateDirective {\n readonly templateRef = inject(TemplateRef<ZenEditorTemplateContext>);\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport type { ZenHeaderTemplateContext } from '../types';\n\n@Directive({\n selector: '[zenHeaderTemplate]',\n standalone: true,\n})\nexport class ZenHeaderTemplateDirective {\n readonly templateRef = inject(TemplateRef<ZenHeaderTemplateContext>);\n}\n","import {\n Component,\n input,\n contentChild,\n} from '@angular/core';\nimport type { ColumnDef, CellOverflowConfig } from '@zengrid/core';\nimport { ZenCellTemplateDirective } from '../directives/zen-cell-template.directive';\nimport { ZenEditorTemplateDirective } from '../directives/zen-editor-template.directive';\nimport { ZenHeaderTemplateDirective } from '../directives/zen-header-template.directive';\nimport type { TemplateBridgeService } from '../services/template-bridge.service';\nimport type { RendererInput, EditorInput } from '../types';\n\n@Component({\n selector: 'zen-column',\n standalone: true,\n template: `<ng-content></ng-content>`,\n})\nexport class ZenColumnComponent {\n readonly field = input.required<string>();\n readonly header = input.required<string>();\n readonly width = input<number | undefined>(undefined);\n readonly renderer = input<RendererInput | undefined>(undefined);\n readonly sortable = input<boolean | undefined>(undefined);\n readonly editable = input<boolean | undefined>(undefined);\n readonly editor = input<EditorInput | undefined>(undefined);\n readonly editorOptions = input<any>(undefined);\n readonly filterable = input<boolean | undefined>(undefined);\n readonly resizable = input<boolean | undefined>(undefined);\n readonly reorderable = input<boolean | undefined>(undefined);\n readonly minWidth = input<number | undefined>(undefined);\n readonly maxWidth = input<number | undefined>(undefined);\n readonly overflow = input<CellOverflowConfig | undefined>(undefined);\n readonly autoHeight = input<boolean | undefined>(undefined);\n readonly id = input<string | undefined>(undefined);\n\n readonly cellTemplate = contentChild(ZenCellTemplateDirective);\n readonly editorTemplate = contentChild(ZenEditorTemplateDirective);\n readonly headerTemplate = contentChild(ZenHeaderTemplateDirective);\n\n toColumnDef(bridge: TemplateBridgeService): ColumnDef {\n const def: ColumnDef = {\n field: this.field(),\n header: this.header(),\n };\n\n const colId = this.id();\n const w = this.width();\n const sort = this.sortable();\n const edit = this.editable();\n const edOpts = this.editorOptions();\n const filter = this.filterable();\n const resize = this.resizable();\n const reorder = this.reorderable();\n const minW = this.minWidth();\n const maxW = this.maxWidth();\n const ov = this.overflow();\n const autoH = this.autoHeight();\n\n if (colId !== undefined) def.id = colId;\n if (w !== undefined) def.width = w;\n if (sort !== undefined) def.sortable = sort;\n if (edit !== undefined) def.editable = edit;\n if (edOpts !== undefined) def.editorOptions = edOpts;\n if (filter !== undefined) def.filterable = filter;\n if (resize !== undefined) def.resizable = resize;\n if (reorder !== undefined) def.reorderable = reorder;\n if (minW !== undefined) def.minWidth = minW;\n if (maxW !== undefined) def.maxWidth = maxW;\n if (ov !== undefined) def.overflow = ov;\n if (autoH !== undefined) def.autoHeight = autoH;\n\n // Resolve renderer: template > component/renderer input > none\n const cellTpl = this.cellTemplate();\n const rendererInput = this.renderer();\n if (cellTpl) {\n def.renderer = bridge.createTemplateRenderer(cellTpl.templateRef);\n } else if (rendererInput !== undefined) {\n if (typeof rendererInput === 'string') {\n def.renderer = rendererInput;\n } else if ('render' in rendererInput && typeof rendererInput.render === 'function') {\n def.renderer = rendererInput as any;\n } else {\n // It's a Component type\n def.renderer = bridge.createComponentRenderer(rendererInput as any);\n }\n }\n\n // Resolve editor: template > component/editor input > none\n const edTpl = this.editorTemplate();\n const editorInput = this.editor();\n if (edTpl) {\n def.editor = bridge.createTemplateEditor(edTpl.templateRef);\n } else if (editorInput !== undefined) {\n if (typeof editorInput === 'string') {\n def.editor = editorInput;\n } else if ('init' in editorInput && typeof editorInput.init === 'function') {\n def.editor = editorInput as any;\n } else {\n def.editor = bridge.createComponentEditor(editorInput as any);\n }\n }\n\n return def;\n }\n}\n","import {\n Injectable,\n TemplateRef,\n ApplicationRef,\n EmbeddedViewRef,\n inject,\n Injector,\n createComponent,\n ComponentRef,\n Type,\n EnvironmentInjector,\n} from '@angular/core';\nimport type {\n CellRenderer,\n RenderParams,\n CellEditor,\n EditorParams,\n} from '@zengrid/core';\nimport type { ZenCellTemplateContext, ZenEditorTemplateContext } from '../types';\n\ninterface PooledView<C> {\n viewRef: EmbeddedViewRef<C>;\n inUse: boolean;\n}\n\ninterface PooledComponent {\n componentRef: ComponentRef<any>;\n inUse: boolean;\n}\n\nconst MAX_POOL_SIZE = 100;\n\n@Injectable({ providedIn: 'root' })\nexport class TemplateBridgeService {\n private readonly appRef = inject(ApplicationRef);\n private readonly injector = inject(Injector);\n private readonly envInjector = inject(EnvironmentInjector);\n\n private templatePools = new Map<TemplateRef<any>, PooledView<any>[]>();\n private componentPools = new Map<Type<any>, PooledComponent[]>();\n\n createTemplateRenderer(templateRef: TemplateRef<ZenCellTemplateContext>): CellRenderer {\n return new TemplateRendererBridge(this, templateRef);\n }\n\n createComponentRenderer(componentType: Type<any>): CellRenderer {\n return new ComponentRendererBridge(this, componentType);\n }\n\n createTemplateEditor(templateRef: TemplateRef<ZenEditorTemplateContext>): CellEditor {\n return new TemplateEditorBridge(this, templateRef);\n }\n\n createComponentEditor(componentType: Type<any>): CellEditor {\n return new ComponentEditorBridge(this, componentType);\n }\n\n acquireView<C>(templateRef: TemplateRef<C>, context: C): EmbeddedViewRef<C> {\n let pool = this.templatePools.get(templateRef);\n if (!pool) {\n pool = [];\n this.templatePools.set(templateRef, pool);\n }\n\n // Find a pooled view not in use\n const pooled = pool.find(p => !p.inUse);\n if (pooled) {\n pooled.inUse = true;\n // Update context\n Object.assign(pooled.viewRef.context as any, context);\n pooled.viewRef.detectChanges();\n return pooled.viewRef;\n }\n\n // Create new\n const viewRef = templateRef.createEmbeddedView(context);\n this.appRef.attachView(viewRef);\n\n if (pool.length < MAX_POOL_SIZE) {\n pool.push({ viewRef, inUse: true });\n }\n\n return viewRef;\n }\n\n releaseView<C>(templateRef: TemplateRef<C>, viewRef: EmbeddedViewRef<C>): void {\n const pool = this.templatePools.get(templateRef);\n if (!pool) return;\n\n const pooled = pool.find(p => p.viewRef === viewRef);\n if (pooled) {\n pooled.inUse = false;\n // Detach root nodes from DOM\n for (const node of viewRef.rootNodes) {\n (node as HTMLElement).remove?.();\n }\n } else {\n this.appRef.detachView(viewRef);\n viewRef.destroy();\n }\n }\n\n acquireComponent(componentType: Type<any>, hostElement: HTMLElement): ComponentRef<any> {\n let pool = this.componentPools.get(componentType);\n if (!pool) {\n pool = [];\n this.componentPools.set(componentType, pool);\n }\n\n const pooled = pool.find(p => !p.inUse);\n if (pooled) {\n pooled.inUse = true;\n hostElement.appendChild((pooled.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0]);\n return pooled.componentRef;\n }\n\n const componentRef = createComponent(componentType, {\n environmentInjector: this.envInjector,\n elementInjector: this.injector,\n hostElement,\n });\n this.appRef.attachView(componentRef.hostView);\n\n if (pool.length < MAX_POOL_SIZE) {\n pool.push({ componentRef, inUse: true });\n }\n\n return componentRef;\n }\n\n releaseComponent(componentType: Type<any>, componentRef: ComponentRef<any>): void {\n const pool = this.componentPools.get(componentType);\n if (!pool) return;\n\n const pooled = pool.find(p => p.componentRef === componentRef);\n if (pooled) {\n pooled.inUse = false;\n const rootNode = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n rootNode?.remove?.();\n } else {\n componentRef.destroy();\n }\n }\n\n destroyAll(): void {\n for (const pool of this.templatePools.values()) {\n for (const { viewRef } of pool) {\n this.appRef.detachView(viewRef);\n viewRef.destroy();\n }\n }\n this.templatePools.clear();\n\n for (const pool of this.componentPools.values()) {\n for (const { componentRef } of pool) {\n componentRef.destroy();\n }\n }\n this.componentPools.clear();\n }\n}\n\nclass TemplateRendererBridge implements CellRenderer {\n private activeViews = new Map<HTMLElement, EmbeddedViewRef<ZenCellTemplateContext>>();\n\n constructor(\n private bridge: TemplateBridgeService,\n private templateRef: TemplateRef<ZenCellTemplateContext>,\n ) {}\n\n render(element: HTMLElement, params: RenderParams): void {\n const context: ZenCellTemplateContext = {\n $implicit: params.value,\n value: params.value,\n cell: params.cell,\n row: params.rowData,\n column: params.column!,\n isSelected: params.isSelected,\n };\n\n const viewRef = this.bridge.acquireView(this.templateRef, context);\n for (const node of viewRef.rootNodes) {\n element.appendChild(node);\n }\n this.activeViews.set(element, viewRef);\n }\n\n update(element: HTMLElement, params: RenderParams): void {\n const viewRef = this.activeViews.get(element);\n if (!viewRef) {\n this.render(element, params);\n return;\n }\n\n const ctx = viewRef.context;\n ctx.$implicit = params.value;\n ctx.value = params.value;\n ctx.cell = params.cell;\n ctx.row = params.rowData;\n ctx.column = params.column!;\n ctx.isSelected = params.isSelected;\n viewRef.detectChanges();\n }\n\n destroy(element: HTMLElement): void {\n const viewRef = this.activeViews.get(element);\n if (viewRef) {\n this.bridge.releaseView(this.templateRef, viewRef);\n this.activeViews.delete(element);\n }\n }\n}\n\nclass ComponentRendererBridge implements CellRenderer {\n private activeComponents = new Map<HTMLElement, ComponentRef<any>>();\n\n constructor(\n private bridge: TemplateBridgeService,\n private componentType: Type<any>,\n ) {}\n\n render(element: HTMLElement, params: RenderParams): void {\n const componentRef = this.bridge.acquireComponent(this.componentType, element);\n componentRef.setInput('params', params);\n componentRef.changeDetectorRef.detectChanges();\n this.activeComponents.set(element, componentRef);\n }\n\n update(element: HTMLElement, params: RenderParams): void {\n const componentRef = this.activeComponents.get(element);\n if (!componentRef) {\n this.render(element, params);\n return;\n }\n componentRef.setInput('params', params);\n componentRef.changeDetectorRef.detectChanges();\n }\n\n destroy(element: HTMLElement): void {\n const componentRef = this.activeComponents.get(element);\n if (componentRef) {\n this.bridge.releaseComponent(this.componentType, componentRef);\n this.activeComponents.delete(element);\n }\n }\n}\n\nclass TemplateEditorBridge implements CellEditor {\n private viewRef: EmbeddedViewRef<ZenEditorTemplateContext> | null = null;\n private currentValue: any = null;\n private onCompleteFn: ((value: any, cancelled: boolean) => void) | null = null;\n\n constructor(\n private bridge: TemplateBridgeService,\n private templateRef: TemplateRef<ZenEditorTemplateContext>,\n ) {}\n\n init(container: HTMLElement, value: any, params: EditorParams): void {\n this.currentValue = value;\n this.onCompleteFn = params.onComplete ?? null;\n\n const context: ZenEditorTemplateContext = {\n $implicit: value,\n value,\n cell: params.cell,\n onComplete: (v: any) => {\n this.currentValue = v;\n this.onCompleteFn?.(v, false);\n },\n onChange: (v: any) => {\n this.currentValue = v;\n params.onChange?.(v);\n },\n };\n\n this.viewRef = this.bridge.acquireView(this.templateRef, context);\n for (const node of this.viewRef.rootNodes) {\n container.appendChild(node);\n }\n }\n\n getValue(): any {\n return this.currentValue;\n }\n\n focus(): void {\n if (!this.viewRef) return;\n const firstInput = this.viewRef.rootNodes\n .find((n: any) => n.querySelector?.('input,select,textarea'));\n firstInput?.querySelector?.('input,select,textarea')?.focus();\n }\n\n destroy(): void {\n if (this.viewRef) {\n this.bridge.releaseView(this.templateRef, this.viewRef);\n this.viewRef = null;\n }\n }\n}\n\nclass ComponentEditorBridge implements CellEditor {\n private componentRef: ComponentRef<any> | null = null;\n private currentValue: any = null;\n\n constructor(\n private bridge: TemplateBridgeService,\n private componentType: Type<any>,\n ) {}\n\n init(container: HTMLElement, value: any, params: EditorParams): void {\n this.currentValue = value;\n this.componentRef = this.bridge.acquireComponent(this.componentType, container);\n this.componentRef.setInput('value', value);\n this.componentRef.setInput('params', params);\n this.componentRef.setInput('onComplete', (v: any) => {\n this.currentValue = v;\n params.onComplete?.(v, false);\n });\n this.componentRef.setInput('onChange', (v: any) => {\n this.currentValue = v;\n params.onChange?.(v);\n });\n this.componentRef.changeDetectorRef.detectChanges();\n }\n\n getValue(): any {\n return this.currentValue;\n }\n\n focus(): void {\n const hostEl = this.componentRef?.location?.nativeElement as HTMLElement;\n (hostEl?.querySelector?.('input,select,textarea') as HTMLElement)?.focus();\n }\n\n destroy(): void {\n if (this.componentRef) {\n this.bridge.releaseComponent(this.componentType, this.componentRef);\n this.componentRef = null;\n }\n }\n}\n","import { InjectionToken, type Provider } from '@angular/core';\nimport type { ZenGridConfig } from '../types';\n\nexport const ZEN_GRID_CONFIG = new InjectionToken<ZenGridConfig>('ZenGridConfig');\n\nexport function provideZenGrid(config: ZenGridConfig): Provider {\n return {\n provide: ZEN_GRID_CONFIG,\n useValue: config,\n };\n}\n","import {\n Component,\n ElementRef,\n ChangeDetectionStrategy,\n afterNextRender,\n viewChild,\n contentChildren,\n input,\n output,\n model,\n effect,\n inject,\n PLATFORM_ID,\n ChangeDetectorRef,\n OutputEmitterRef,\n NgZone,\n DestroyRef,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Grid } from '@zengrid/core';\nimport type {\n GridOptions,\n GridExportOptions,\n GridEvents,\n SortState,\n FilterModel,\n CellRange,\n CellRef,\n ColumnDef,\n ColumnStateSnapshot,\n GridStateSnapshot,\n GridPlugin,\n ColumnConstraints,\n HeaderRenderer,\n VisibleRange,\n PaginationConfig,\n LoadingConfig,\n CellOverflowConfig,\n RowHeightConfig,\n SortIcons,\n RendererCacheConfig,\n} from '@zengrid/core';\nimport { GridApiImpl, PluginHost } from '@zengrid/core';\nimport { resolveOperationMode, type OperationMode } from '@zengrid/shared';\nimport { EVENT_MAP } from '../utils/event-map';\nimport { ZenColumnComponent } from './zen-column.component';\nimport { TemplateBridgeService } from '../services/template-bridge.service';\nimport { ZEN_GRID_CONFIG } from '../services/zen-grid-config.token';\n\n@Component({\n selector: 'zen-grid',\n standalone: true,\n template: `\n @if (_isBrowser) {\n <div #gridContainer class=\"zen-grid-container\"></div>\n } @else {\n <div class=\"zen-grid-placeholder\" [style.height.px]=\"placeholderHeight\"></div>\n }\n <div style=\"display:none\">\n <ng-content></ng-content>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n position: relative;\n height: 100%;\n }\n .zen-grid-container {\n width: 100%;\n height: 100%;\n }\n .zen-grid-placeholder {\n width: 100%;\n background: #f5f5f5;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ZenGridComponent {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly ngZone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n private readonly templateBridge = inject(TemplateBridgeService);\n private readonly globalConfig = inject(ZEN_GRID_CONFIG, { optional: true });\n\n readonly _isBrowser = isPlatformBrowser(this.platformId);\n\n get placeholderHeight(): number {\n const rowHeight = this.getResolvedRowHeight();\n const height = typeof rowHeight === 'number' ? rowHeight : 30;\n return this.rowCount() * height;\n }\n\n private readonly gridContainerRef = viewChild<ElementRef<HTMLElement>>('gridContainer');\n private readonly columnChildren = contentChildren(ZenColumnComponent);\n\n private grid: Grid | null = null;\n private gridReady = false;\n private readonly explicitInputs = new Set<'rowHeight' | 'colWidth' | 'columns'>();\n private pendingModelDataSync: any[][] | null = null;\n\n // --- Core Inputs ---\n readonly rowCount = input.required<number>();\n readonly colCount = input.required<number>();\n readonly rowHeight = input<number | number[], number | number[]>(30, {\n transform: (value: number | number[]) => this.markExplicitInput('rowHeight', value),\n });\n readonly colWidth = input<number | number[], number | number[]>(100, {\n transform: (value: number | number[]) => this.markExplicitInput('colWidth', value),\n });\n readonly columns = input<ColumnDef[], ColumnDef[]>([], {\n transform: (value: ColumnDef[]) => this.markExplicitInput('columns', value),\n });\n\n // --- Feature Inputs ---\n readonly enableSelection = input<boolean | undefined>(undefined);\n readonly enableMultiSelection = input<boolean | undefined>(undefined);\n readonly selectionType = input<'cell' | 'row' | 'column' | 'range' | undefined>(undefined);\n readonly enableColumnResize = input<boolean | undefined>(undefined);\n readonly enableColumnDrag = input<boolean | undefined>(undefined);\n readonly enableKeyboardNavigation = input<boolean | undefined>(undefined);\n readonly enableA11y = input<boolean | undefined>(undefined);\n readonly enableCellPooling = input<boolean | undefined>(undefined);\n\n // --- Mode Inputs ---\n readonly dataMode = input<OperationMode | undefined>(undefined);\n\n // --- Backend Callback Inputs ---\n readonly onDataRequest = input<GridOptions['onDataRequest']>(undefined);\n readonly onLoadMoreRows = input<GridOptions['onLoadMoreRows']>(undefined);\n\n // --- Config Object Inputs ---\n readonly pagination = input<PaginationConfig | undefined>(undefined);\n readonly loading = input<LoadingConfig | undefined>(undefined);\n readonly infiniteScrolling = input<GridOptions['infiniteScrolling']>(undefined);\n readonly rowHeightMode = input<'fixed' | 'auto' | 'content-aware' | undefined>(undefined);\n readonly rowHeightConfig = input<RowHeightConfig | undefined>(undefined);\n readonly columnResize = input<GridOptions['columnResize']>(undefined);\n readonly columnDrag = input<GridOptions['columnDrag']>(undefined);\n readonly cellOverflow = input<CellOverflowConfig | undefined>(undefined);\n readonly autoResize = input<boolean | undefined>(undefined);\n readonly overscanRows = input<number | undefined>(undefined);\n readonly overscanCols = input<number | undefined>(undefined);\n readonly sortIcons = input<SortIcons | undefined>(undefined);\n readonly rendererCache = input<RendererCacheConfig | undefined>(undefined);\n\n // --- Callback Inputs (GridOptions event callbacks) ---\n readonly onScrollCallback = input<GridOptions['onScroll']>(undefined);\n readonly onCellClickCallback = input<GridOptions['onCellClick']>(undefined);\n readonly onCellDoubleClickCallback = input<GridOptions['onCellDoubleClick']>(undefined);\n readonly onCellContextMenuCallback = input<GridOptions['onCellContextMenu']>(undefined);\n readonly onSelectionChangeCallback = input<GridOptions['onSelectionChange']>(undefined);\n readonly onPageChangeCallback = input<GridOptions['onPageChange']>(undefined);\n readonly onColumnWidthsChangeCallback = input<GridOptions['onColumnWidthsChange']>(undefined);\n\n // --- Plugin Input ---\n readonly plugins = input<GridPlugin[]>([]);\n\n // --- Two-way Model Signals ---\n readonly data = model<any[][]>([]);\n readonly selection = model<CellRange[]>([]);\n readonly sortState = model<SortState[]>([]);\n readonly filterState = model<FilterModel[]>([]);\n readonly currentPage = model<number>(1);\n\n // --- Cell Events ---\n readonly cellClick = output<GridEvents['cell:click']>();\n readonly cellDoubleClick = output<GridEvents['cell:doubleClick']>();\n readonly cellContextMenu = output<GridEvents['cell:contextMenu']>();\n readonly cellChange = output<GridEvents['cell:change']>();\n readonly cellBeforeChange = output<GridEvents['cell:beforeChange']>();\n readonly cellAfterChange = output<GridEvents['cell:afterChange']>();\n\n // --- Selection Events ---\n readonly selectionChangeEvent = output<GridEvents['selection:change']>({ alias: 'selectionChanged' });\n readonly selectionStart = output<GridEvents['selection:start']>();\n readonly selectionEnd = output<GridEvents['selection:end']>();\n\n // --- Editing Events ---\n readonly editStart = output<GridEvents['edit:start']>();\n readonly editEnd = output<GridEvents['edit:end']>();\n readonly editCommit = output<GridEvents['edit:commit']>();\n readonly editCancel = output<GridEvents['edit:cancel']>();\n\n // --- Scroll Events ---\n readonly scroll = output<GridEvents['scroll']>();\n readonly scrollStart = output<GridEvents['scroll:start']>();\n readonly scrollEnd = output<GridEvents['scroll:end']>();\n\n // --- Sort Events ---\n readonly sortChange = output<GridEvents['sort:change']>();\n readonly sortBeforeSort = output<GridEvents['sort:beforeSort']>();\n readonly sortAfterSort = output<GridEvents['sort:afterSort']>();\n\n // --- Filter Events ---\n readonly filterChange = output<GridEvents['filter:change']>();\n readonly filterBeforeFilter = output<GridEvents['filter:beforeFilter']>();\n readonly filterAfterFilter = output<GridEvents['filter:afterFilter']>();\n readonly filterExport = output<GridEvents['filter:export']>();\n readonly filterStart = output<GridEvents['filter:start']>();\n readonly filterEnd = output<GridEvents['filter:end']>();\n readonly filterError = output<GridEvents['filter:error']>();\n readonly filterClear = output<GridEvents['filter:clear']>();\n\n // --- Focus Events ---\n readonly focusChange = output<GridEvents['focus:change']>();\n readonly focusIn = output<GridEvents['focus:in']>();\n readonly focusOut = output<GridEvents['focus:out']>();\n\n // --- Keyboard Events ---\n readonly keyDown = output<GridEvents['key:down']>();\n readonly keyUp = output<GridEvents['key:up']>();\n readonly keyPress = output<GridEvents['key:press']>();\n\n // --- Column Events ---\n readonly columnResizeEvent = output<GridEvents['column:resize']>({ alias: 'columnResize' });\n readonly columnMove = output<GridEvents['column:move']>();\n readonly columnHide = output<GridEvents['column:hide']>();\n readonly columnShow = output<GridEvents['column:show']>();\n readonly columnDragStart = output<GridEvents['column:dragStart']>();\n readonly columnDragEvent = output<GridEvents['column:drag']>({ alias: 'columnDrag' });\n readonly columnDragEnd = output<GridEvents['column:dragEnd']>();\n readonly columnDragCancel = output<GridEvents['column:dragCancel']>();\n\n // --- Header Events ---\n readonly headerClick = output<GridEvents['header:click']>();\n readonly headerDoubleClick = output<GridEvents['header:doubleClick']>();\n readonly headerContextMenu = output<GridEvents['header:contextMenu']>();\n readonly headerHover = output<GridEvents['header:hover']>();\n readonly headerSortClick = output<GridEvents['header:sort:click']>();\n readonly headerFilterClick = output<GridEvents['header:filter:click']>();\n readonly headerCheckboxChange = output<GridEvents['header:checkbox:change']>();\n\n // --- Lifecycle Events ---\n readonly renderStart = output<GridEvents['render:start']>();\n readonly renderEnd = output<GridEvents['render:end']>();\n readonly dataLoad = output<GridEvents['data:load']>();\n readonly dataChange = output<GridEvents['data:change']>();\n readonly loadingStart = output<GridEvents['loading:start']>();\n readonly loadingEnd = output<GridEvents['loading:end']>();\n readonly loadingProgress = output<GridEvents['loading:progress']>();\n readonly undoRedoChange = output<GridEvents['undo-redo:change']>();\n readonly gridDestroy = output<GridEvents['destroy']>();\n readonly gridError = output<GridEvents['error']>();\n readonly gridWarning = output<GridEvents['warning']>();\n\n // --- Row Events ---\n readonly rowInsert = output<GridEvents['row:insert']>();\n readonly rowDelete = output<GridEvents['row:delete']>();\n readonly rowMove = output<GridEvents['row:move']>();\n\n // --- Clipboard Events ---\n readonly copy = output<GridEvents['copy']>();\n readonly cut = output<GridEvents['cut']>();\n readonly paste = output<GridEvents['paste']>();\n\n private outputMap: Record<string, OutputEmitterRef<any>> = {};\n private eventHandlers: Array<{ event: string; handler: (payload: any) => void }> = [];\n\n constructor() {\n this.buildOutputMap();\n\n this.destroyRef.onDestroy(() => {\n if (this.grid) {\n for (const { event, handler } of this.eventHandlers) {\n this.grid.off(event as any, handler);\n }\n this.grid.destroy();\n this.grid = null;\n }\n this.eventHandlers = [];\n this.gridReady = false;\n this.templateBridge.destroyAll();\n });\n\n afterNextRender(() => {\n this.ngZone.runOutsideAngular(() => {\n this.initGrid();\n });\n });\n\n // Sync data input → grid (skip first run, initGrid handles initial data)\n effect(() => {\n const data = this.data();\n if (!this.gridReady || this.getResolvedDataMode() !== 'frontend') return;\n if (!Array.isArray(data)) return;\n\n if (this.pendingModelDataSync === data) {\n this.pendingModelDataSync = null;\n return;\n }\n\n this.grid!.setData(data);\n });\n\n // Sync columns from content children or input (skip first run)\n effect(() => {\n this.columnChildren();\n this.columns();\n if (!this.gridReady) return;\n\n const resolvedColumns = this.getComponentColumns();\n if (resolvedColumns !== undefined) {\n this.grid!.updateOptions({ columns: resolvedColumns });\n }\n });\n\n // Sync option changes with previous-value diffing (only sends changed values)\n const prevOptions: Record<string, any> = {};\n effect(() => {\n const current: Array<[string, any]> = [\n ['rowHeight', this.getResolvedRowHeight()],\n ['colWidth', this.getResolvedColWidth()],\n ['selectionType', this.selectionType()],\n ['enableSelection', this.enableSelection()],\n ['enableMultiSelection', this.enableMultiSelection()],\n ['enableKeyboardNavigation', this.enableKeyboardNavigation()],\n ['enableA11y', this.enableA11y()],\n ['enableColumnResize', this.enableColumnResize()],\n ['enableColumnDrag', this.enableColumnDrag()],\n ['dataMode', this.getConfiguredDataMode()],\n ['pagination', this.pagination()],\n ['loading', this.loading()],\n ['infiniteScrolling', this.infiniteScrolling()],\n ['rowHeightMode', this.rowHeightMode()],\n ['rowHeightConfig', this.rowHeightConfig()],\n ['columnResize', this.columnResize()],\n ['columnDrag', this.columnDrag()],\n ['cellOverflow', this.cellOverflow()],\n ['autoResize', this.autoResize()],\n ['overscanRows', this.overscanRows()],\n ['overscanCols', this.overscanCols()],\n ];\n\n if (!this.gridReady) {\n // Store initial values for diffing on next run\n for (const [key, val] of current) {\n prevOptions[key] = val;\n }\n return;\n }\n\n const changed: Partial<GridOptions> = {};\n let hasChanges = false;\n\n for (const [key, val] of current) {\n if (val !== undefined && val !== prevOptions[key]) {\n (changed as any)[key] = val;\n hasChanges = true;\n }\n prevOptions[key] = val;\n }\n\n if (hasChanges) {\n this.grid!.updateOptions(changed);\n }\n });\n }\n\n private markExplicitInput<T>(name: 'rowHeight' | 'colWidth' | 'columns', value: T): T {\n this.explicitInputs.add(name);\n return value;\n }\n\n private hasExplicitInput(name: 'rowHeight' | 'colWidth' | 'columns'): boolean {\n return this.explicitInputs.has(name);\n }\n\n private getResolvedDataMode(): 'frontend' | 'backend' {\n return resolveOperationMode(\n {\n mode: this.getConfiguredDataMode(),\n callback:\n this.onDataRequest() ??\n (this.globalConfig?.['onDataRequest'] as GridOptions['onDataRequest'] | undefined),\n },\n { rowCount: this.rowCount() }\n );\n }\n\n private getConfiguredDataMode(): OperationMode | undefined {\n return this.dataMode() ?? (this.globalConfig?.['dataMode'] as OperationMode | undefined);\n }\n\n private getResolvedRowHeight(): number | number[] {\n const configured = this.globalConfig?.['rowHeight'] as GridOptions['rowHeight'] | undefined;\n return this.hasExplicitInput('rowHeight') || configured === undefined ? this.rowHeight() : configured;\n }\n\n private getResolvedColWidth(): number | number[] {\n const configured = this.globalConfig?.['colWidth'] as GridOptions['colWidth'] | undefined;\n return this.hasExplicitInput('colWidth') || configured === undefined ? this.colWidth() : configured;\n }\n\n private getComponentColumns(): ColumnDef[] | undefined {\n const columnChildren = this.columnChildren();\n if (columnChildren.length > 0) {\n return columnChildren.map(c => c.toColumnDef(this.templateBridge));\n }\n\n const inputColumns = this.columns();\n if (this.hasExplicitInput('columns') || inputColumns.length > 0) {\n return inputColumns;\n }\n\n return undefined;\n }\n\n private buildOutputMap(): void {\n this.outputMap = {\n cellClick: this.cellClick,\n cellDoubleClick: this.cellDoubleClick,\n cellContextMenu: this.cellContextMenu,\n cellChange: this.cellChange,\n cellBeforeChange: this.cellBeforeChange,\n cellAfterChange: this.cellAfterChange,\n selectionChange: this.selectionChangeEvent,\n selectionStart: this.selectionStart,\n selectionEnd: this.selectionEnd,\n editStart: this.editStart,\n editEnd: this.editEnd,\n editCommit: this.editCommit,\n editCancel: this.editCancel,\n scroll: this.scroll,\n scrollStart: this.scrollStart,\n scrollEnd: this.scrollEnd,\n sortChange: this.sortChange,\n sortBeforeSort: this.sortBeforeSort,\n sortAfterSort: this.sortAfterSort,\n filterChange: this.filterChange,\n filterBeforeFilter: this.filterBeforeFilter,\n filterAfterFilter: this.filterAfterFilter,\n filterExport: this.filterExport,\n filterStart: this.filterStart,\n filterEnd: this.filterEnd,\n filterError: this.filterError,\n filterClear: this.filterClear,\n focusChange: this.focusChange,\n focusIn: this.focusIn,\n focusOut: this.focusOut,\n keyDown: this.keyDown,\n keyUp: this.keyUp,\n keyPress: this.keyPress,\n columnResize: this.columnResizeEvent,\n columnMove: this.columnMove,\n columnHide: this.columnHide,\n columnShow: this.columnShow,\n columnDragStart: this.columnDragStart,\n columnDrag: this.columnDragEvent,\n columnDragEnd: this.columnDragEnd,\n columnDragCancel: this.columnDragCancel,\n headerClick: this.headerClick,\n headerDoubleClick: this.headerDoubleClick,\n headerContextMenu: this.headerContextMenu,\n headerHover: this.headerHover,\n headerSortClick: this.headerSortClick,\n headerFilterClick: this.headerFilterClick,\n headerCheckboxChange: this.headerCheckboxChange,\n renderStart: this.renderStart,\n renderEnd: this.renderEnd,\n dataLoad: this.dataLoad,\n dataChange: this.dataChange,\n loadingStart: this.loadingStart,\n loadingEnd: this.loadingEnd,\n loadingProgress: this.loadingProgress,\n undoRedoChange: this.undoRedoChange,\n gridDestroy: this.gridDestroy,\n gridError: this.gridError,\n gridWarning: this.gridWarning,\n rowInsert: this.rowInsert,\n rowDelete: this.rowDelete,\n rowMove: this.rowMove,\n copy: this.copy,\n cut: this.cut,\n paste: this.paste,\n };\n }\n\n private initGrid(): void {\n const containerRef = this.gridContainerRef();\n if (!containerRef) return;\n\n const container = containerRef.nativeElement;\n const dataValue = this.data();\n const componentColumns = this.getComponentColumns();\n const resolvedDataMode = this.getResolvedDataMode();\n\n const options: GridOptions = {\n ...(this.globalConfig ?? {}),\n rowCount: this.rowCount(),\n colCount: this.colCount(),\n ...this.getOptionalOptions(),\n rowHeight: this.getResolvedRowHeight(),\n colWidth: this.getResolvedColWidth(),\n ...(componentColumns !== undefined ? { columns: componentColumns } : {}),\n };\n\n this.grid = new Grid(container, options);\n\n // Wire up events\n this.wireEvents();\n\n // Frontend mode owns the in-memory dataset, including an explicit empty array.\n if (resolvedDataMode === 'frontend' && Array.isArray(dataValue)) {\n this.grid.setData(dataValue);\n }\n\n // Install plugins\n const pluginList = this.plugins();\n for (const plugin of pluginList) {\n this.grid.usePlugin(plugin);\n }\n\n this.grid.render();\n this.gridReady = true;\n }\n\n private getOptionalOptions(): Partial<GridOptions> {\n const opts: Partial<GridOptions> = {};\n\n const enSel = this.enableSelection();\n const enMulti = this.enableMultiSelection();\n const selType = this.selectionType();\n const enKb = this.enableKeyboardNavigation();\n const enA11y = this.enableA11y();\n const enPool = this.enableCellPooling();\n const enResize = this.enableColumnResize();\n const enDrag = this.enableColumnDrag();\n const dMode = this.getConfiguredDataMode();\n const dReq = this.onDataRequest();\n const loadMore = this.onLoadMoreRows();\n const pag = this.pagination();\n const load = this.loading();\n const infScroll = this.infiniteScrolling();\n const rhMode = this.rowHeightMode();\n const rhConfig = this.rowHeightConfig();\n const colResizeConf = this.columnResize();\n const colDragConf = this.columnDrag();\n const overflow = this.cellOverflow();\n const autoRes = this.autoResize();\n const oRows = this.overscanRows();\n const oCols = this.overscanCols();\n const sIcons = this.sortIcons();\n const rCache = this.rendererCache();\n const onScrollCb = this.onScrollCallback();\n const onCellClickCb = this.onCellClickCallback();\n const onCellDblClickCb = this.onCellDoubleClickCallback();\n const onCellCtxCb = this.onCellContextMenuCallback();\n const onSelChangeCb = this.onSelectionChangeCallback();\n const onPageChangeCb = this.onPageChangeCallback();\n const onColWidthsCb = this.onColumnWidthsChangeCallback();\n\n if (enSel !== undefined) opts.enableSelection = enSel;\n if (enMulti !== undefined) opts.enableMultiSelection = enMulti;\n if (selType !== undefined) opts.selectionType = selType;\n if (enKb !== undefined) opts.enableKeyboardNavigation = enKb;\n if (enA11y !== undefined) opts.enableA11y = enA11y;\n if (enPool !== undefined) opts.enableCellPooling = enPool;\n if (enResize !== undefined) opts.enableColumnResize = enResize;\n if (enDrag !== undefined) opts.enableColumnDrag = enDrag;\n if (dMode !== undefined) opts.dataMode = dMode;\n if (dReq !== undefined) opts.onDataRequest = dReq;\n if (loadMore !== undefined) opts.onLoadMoreRows = loadMore;\n if (pag !== undefined) opts.pagination = pag;\n if (load !== undefined) opts.loading = load;\n if (infScroll !== undefined) opts.infiniteScrolling = infScroll;\n if (rhMode !== undefined) opts.rowHeightMode = rhMode;\n if (rhConfig !== undefined) opts.rowHeightConfig = rhConfig;\n if (colResizeConf !== undefined) opts.columnResize = colResizeConf;\n if (colDragConf !== undefined) opts.columnDrag = colDragConf;\n if (overflow !== undefined) opts.cellOverflow = overflow;\n if (autoRes !== undefined) opts.autoResize = autoRes;\n if (oRows !== undefined) opts.overscanRows = oRows;\n if (oCols !== undefined) opts.overscanCols = oCols;\n if (sIcons !== undefined) opts.sortIcons = sIcons;\n if (rCache !== undefined) opts.rendererCache = rCache;\n if (onScrollCb !== undefined) opts.onScroll = onScrollCb;\n if (onCellClickCb !== undefined) opts.onCellClick = onCellClickCb;\n if (onCellDblClickCb !== undefined) opts.onCellDoubleClick = onCellDblClickCb;\n if (onCellCtxCb !== undefined) opts.onCellContextMenu = onCellCtxCb;\n if (onSelChangeCb !== undefined) opts.onSelectionChange = onSelChangeCb;\n if (onPageChangeCb !== undefined) opts.onPageChange = onPageChangeCb;\n if (onColWidthsCb !== undefined) opts.onColumnWidthsChange = onColWidthsCb;\n\n return opts;\n }\n\n private wireEvents(): void {\n if (!this.grid) return;\n\n for (const [gridEvent, outputName] of Object.entries(EVENT_MAP)) {\n const outputRef = this.outputMap[outputName];\n if (!outputRef) continue;\n\n const handler = (payload: any) => {\n this.ngZone.run(() => {\n outputRef.emit(payload);\n\n // Update two-way model signals for specific events\n if (gridEvent === 'selection:change' && payload?.ranges) {\n this.selection.set(payload.ranges);\n } else if (gridEvent === 'sort:change' && payload?.sortState) {\n this.sortState.set(payload.sortState);\n } else if (gridEvent === 'filter:change' && payload?.filterState) {\n this.filterState.set(payload.filterState);\n } else if (gridEvent === 'data:change') {\n // data:change doesn't carry full data, skip model update\n }\n\n this.cdr.markForCheck();\n });\n };\n\n this.grid.on(gridEvent as any, handler);\n this.eventHandlers.push({ event: gridEvent, handler });\n }\n }\n\n // --- Public API Methods ---\n\n get gridInstance(): Grid | null {\n return this.grid;\n }\n\n render(): void {\n this.grid?.render();\n }\n\n refresh(): void {\n this.grid?.refresh();\n }\n\n clearCache(): void {\n this.grid?.clearCache();\n }\n\n updateCells(cells: CellRef[]): void {\n this.grid?.updateCells(cells);\n }\n\n setData(data: any[][]): void {\n if (this.getResolvedDataMode() === 'frontend') {\n if (this.grid) {\n this.pendingModelDataSync = data;\n this.grid.setData(data);\n }\n }\n\n this.data.set(data);\n }\n\n getData(row: number, col: number): any {\n return this.grid?.getData(row, col);\n }\n\n // --- Sort API ---\n sortColumn(column: number, direction: 'asc' | 'desc' | null = 'asc'): void {\n if (direction === null) this.grid?.sort.clear();\n else this.grid?.sort.apply([{ column, direction }]);\n }\n\n toggleSort(column: number): void {\n this.grid?.sort.toggle(column);\n }\n\n getSortState(): SortState[] {\n return this.grid?.sort.getState() ?? [];\n }\n\n clearSort(): void {\n this.grid?.sort.clear();\n }\n\n setSortState(sortState: SortState[]): void {\n this.grid?.sort.setState(sortState);\n }\n\n // --- Filter API ---\n setFilter(column: number, operator: string, value: any): void {\n this.grid?.filter.set(column, operator, value);\n }\n\n setColumnFilter(\n column: number,\n conditions: Array<{ operator: string; value: any }>,\n logic: 'AND' | 'OR' = 'AND'\n ): void {\n this.grid?.filter.setColumn(column, conditions, logic);\n }\n\n getFilterState(): FilterModel[] {\n return this.grid?.filter.getState() ?? [];\n }\n\n setFilterState(models: FilterModel[]): void {\n this.grid?.filter.setState(models);\n }\n\n clearFilters(): void {\n this.grid?.filter.clear();\n }\n\n clearColumnFilter(column: number): void {\n this.grid?.filter.clearColumn(column);\n }\n\n setQuickFilter(query: string, columns?: number[]): void {\n this.grid?.filter.setQuick(query, columns);\n }\n\n clearQuickFilter(): void {\n this.grid?.filter.clearQuick();\n }\n\n // --- Export API ---\n exportCSV(options: GridExportOptions = {}): string {\n return this.grid?.export.csv(options) ?? '';\n }\n\n exportTSV(options: GridExportOptions = {}): string {\n return this.grid?.export.tsv(options) ?? '';\n }\n\n // --- Pagination API ---\n goToPage(page: number): void {\n this.grid?.pagination.goTo(page);\n this.currentPage.set(page);\n }\n\n nextPage(): void {\n this.grid?.pagination.next();\n this.currentPage.set(this.grid?.pagination.getCurrentPage() ?? 1);\n }\n\n previousPage(): void {\n this.grid?.pagination.previous();\n this.currentPage.set(this.grid?.pagination.getCurrentPage() ?? 1);\n }\n\n setPageSize(pageSize: number): void {\n this.grid?.pagination.setPageSize(pageSize);\n }\n\n getCurrentPage(): number {\n return this.grid?.pagination.getCurrentPage() ?? 1;\n }\n\n getPageSize(): number {\n return this.grid?.pagination.getPageSize() ?? 0;\n }\n\n getTotalPages(): number {\n return this.grid?.pagination.getTotalPages() ?? 0;\n }\n\n // --- Column API ---\n resizeColumn(col: number, width: number): void {\n this.grid?.resizeColumn(col, width);\n }\n\n autoFitColumn(col: number): void {\n this.grid?.autoFitColumn(col);\n }\n\n autoFitAllColumns(): void {\n this.grid?.autoFitAllColumns();\n }\n\n setColumnConstraints(col: number, constraints: ColumnConstraints): void {\n this.grid?.setColumnConstraints(col, constraints);\n }\n\n // --- State Persistence API ---\n getColumnState(): ColumnStateSnapshot[] {\n return this.grid?.getColumnState() ?? [];\n }\n\n applyColumnState(\n state: ColumnStateSnapshot[],\n options?: { applyWidth?: boolean; applyVisibility?: boolean; applyOrder?: boolean }\n ): void {\n this.grid?.applyColumnState(state, options);\n }\n\n getStateSnapshot(): GridStateSnapshot | null {\n return this.grid?.getStateSnapshot() ?? null;\n }\n\n applyStateSnapshot(snapshot: GridStateSnapshot): void {\n this.grid?.applyStateSnapshot(snapshot);\n }\n\n // --- Scroll API ---\n scrollToCell(row: number, col: number): void {\n this.grid?.scrollToCell(row, col);\n }\n\n getScrollPosition(): { top: number; left: number } {\n return this.grid?.getScrollPosition() ?? { top: 0, left: 0 };\n }\n\n getVisibleRange(): VisibleRange | null {\n return this.grid?.getVisibleRange() ?? null;\n }\n\n // --- Header API ---\n registerHeaderRenderer(name: string, renderer: HeaderRenderer): void {\n this.grid?.registerHeaderRenderer(name, renderer);\n }\n\n updateHeader(columnIndex: number): void {\n this.grid?.updateHeader(columnIndex);\n }\n\n updateAllHeaders(): void {\n this.grid?.updateAllHeaders();\n }\n\n // --- Plugin API ---\n usePlugin(plugin: GridPlugin): void {\n this.grid?.usePlugin(plugin);\n }\n\n // --- Stats ---\n getStats(): any {\n return this.grid?.getStats();\n }\n\n getDimensions(): { width: number; height: number } {\n return this.grid?.getDimensions() ?? { width: 0, height: 0 };\n }\n\n getColumnPosition(col: number): { x: number; width: number } {\n return this.grid?.getColumnPosition(col) ?? { x: 0, width: 0 };\n }\n\n // --- Data Mode ---\n getDataMode(): 'frontend' | 'backend' {\n return this.grid?.getDataMode() ?? 'frontend';\n }\n\n // --- Sort (missing methods) ---\n getColumnSort(column: number): any {\n return this.grid?.getColumnSort(column);\n }\n\n getSortIcons(): { asc: string; desc: string } {\n return this.grid?.getSortIcons() ?? { asc: '▲', desc: '▼' };\n }\n\n getSortMode(): 'frontend' | 'backend' {\n return this.grid?.getSortMode() ?? 'frontend';\n }\n\n // --- Filter (missing methods) ---\n getFieldFilterState(): any {\n return this.grid?.getFieldFilterState();\n }\n\n getFilterExports(): any {\n return this.grid?.getFilterExports();\n }\n\n getFilterMode(): 'frontend' | 'backend' {\n return this.grid?.getFilterMode() ?? 'frontend';\n }\n\n getQuickFilter(): { query: string; columns: number[] | null } {\n return this.grid?.getQuickFilter() ?? { query: '', columns: null };\n }\n\n // --- Pagination (missing methods) ---\n firstPage(): void {\n this.grid?.firstPage();\n this.currentPage.set(this.grid?.getCurrentPage() ?? 1);\n }\n\n lastPage(): void {\n this.grid?.lastPage();\n this.currentPage.set(this.grid?.getCurrentPage() ?? 1);\n }\n\n // --- Scroll (missing methods) ---\n scrollThroughCells(\n cells: Array<{ row: number; col: number }>,\n options?: {\n delayMs?: number;\n smooth?: boolean;\n onCellReached?: (cell: { row: number; col: number }, index: number) => void;\n }\n ): { promise: Promise<void>; abort: () => void } {\n return this.grid?.scrollThroughCells(cells, options) ?? {\n promise: Promise.resolve(),\n abort: () => {},\n };\n }\n\n // --- Column Resize/Drag (missing methods) ---\n attachColumnResize(headerElement: HTMLElement): void {\n this.grid?.attachColumnResize(headerElement);\n }\n\n detachColumnResize(): void {\n this.grid?.detachColumnResize();\n }\n\n updateColumnResizeHandles(): void {\n this.grid?.updateColumnResizeHandles();\n }\n\n attachColumnDrag(headerElement: HTMLElement): void {\n this.grid?.attachColumnDrag(headerElement);\n }\n\n detachColumnDrag(): void {\n this.grid?.detachColumnDrag();\n }\n\n isDragging(): boolean {\n return this.grid?.isDragging() ?? false;\n }\n\n // --- Renderer Registration ---\n registerRenderer(name: string, renderer: any): void {\n this.grid?.registerRenderer(name, renderer);\n }\n\n // --- Options Update ---\n updateOptions(options: Partial<GridOptions>): void {\n this.grid?.updateOptions(options);\n }\n\n // --- Header (missing methods) ---\n refreshHeaders(): void {\n this.grid?.refreshHeaders();\n }\n\n // --- Infinite Scroll ---\n resetInfiniteScrolling(): void {\n this.grid?.resetInfiniteScrolling();\n }\n\n getSlidingWindowStats(): any {\n return this.grid?.getSlidingWindowStats();\n }\n\n // --- Plugin System (advanced) ---\n getStore(): any {\n return this.grid?.getStore();\n }\n\n getPluginHost(): PluginHost | null {\n return this.grid?.getPluginHost() ?? null;\n }\n\n getGridApi(): GridApiImpl | null {\n return this.grid?.getGridApi() ?? null;\n }\n\n}\n","import { Directive, forwardRef, inject } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\nimport { ZenGridComponent } from '../components/zen-grid.component';\n\n@Directive({\n selector: 'zen-grid[formControl],zen-grid[formControlName],zen-grid[ngModel]',\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZenGridValueAccessorDirective),\n multi: true,\n },\n ],\n})\nexport class ZenGridValueAccessorDirective implements ControlValueAccessor {\n private readonly grid = inject(ZenGridComponent);\n private onChange: (value: any[][]) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n this.grid.dataChange.subscribe(() => {\n this.onChange(this.grid.data());\n this.onTouched();\n });\n }\n\n writeValue(value: any[][]): void {\n if (value) {\n this.grid.setData(value);\n }\n }\n\n registerOnChange(fn: (value: any[][]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import { Injector } from '@angular/core';\nimport type {\n GridPlugin,\n GridStore,\n GridApiInterface,\n GridPluginSetupContext,\n PluginDisposable,\n} from '@zengrid/core';\n\nexport class AngularPluginWrapper implements GridPlugin {\n readonly name: string;\n readonly phase: number;\n readonly dependencies?: string[];\n\n constructor(\n private readonly injector: Injector,\n private readonly pluginFactory: (injector: Injector) => GridPlugin,\n ) {\n const plugin = this.pluginFactory(this.injector);\n this.name = plugin.name;\n this.phase = plugin.phase;\n this.dependencies = plugin.dependencies;\n }\n\n setup(store: GridStore, api: GridApiInterface, context: GridPluginSetupContext): PluginDisposable | void {\n const plugin = this.pluginFactory(this.injector);\n return plugin.setup(store, api, context);\n }\n\n dispose(): void {\n // Plugin cleanup handled by PluginHost\n }\n}\n\nexport function createAngularPlugin(\n injector: Injector,\n factory: (injector: Injector) => GridPlugin,\n): GridPlugin {\n return new AngularPluginWrapper(injector, factory);\n}\n","import { signal, type Signal, type WritableSignal } from '@angular/core';\nimport type { GridStore } from '@zengrid/core';\n\nexport function bridgeStoreSignal<T>(store: GridStore, key: string): Signal<T> {\n const angularSignal: WritableSignal<T> = signal(store.get(key) as T);\n\n store.effect(\n `angular-bridge:${key}`,\n () => {\n const value = store.get(key) as T;\n angularSignal.set(value);\n },\n 'angular-bridge'\n );\n\n return angularSignal.asReadonly();\n}\n","// Components\nexport { ZenGridComponent } from './lib/components/zen-grid.component';\nexport { ZenColumnComponent } from './lib/components/zen-column.component';\n\n// Directives\nexport { ZenCellTemplateDirective } from './lib/directives/zen-cell-template.directive';\nexport { ZenEditorTemplateDirective } from './lib/directives/zen-editor-template.directive';\nexport { ZenHeaderTemplateDirective } from './lib/directives/zen-header-template.directive';\nexport { ZenGridValueAccessorDirective } from './lib/directives/zen-grid-value-accessor.directive';\n\n// Services\nexport { TemplateBridgeService } from './lib/services/template-bridge.service';\nexport { ZEN_GRID_CONFIG, provideZenGrid } from './lib/services/zen-grid-config.token';\n\n// Angular Plugins\nexport { AngularPluginWrapper, createAngularPlugin } from './lib/plugins/angular-plugin-wrapper';\n\n// Utils\nexport { EVENT_MAP } from './lib/utils/event-map';\nexport { bridgeStoreSignal } from './lib/utils/signal-bridge';\n\n// Angular-specific Types\nexport type {\n ZenCellTemplateContext,\n ZenEditorTemplateContext,\n ZenHeaderTemplateContext,\n ZenGridConfig,\n RendererInput,\n EditorInput,\n HeaderRendererInput,\n} from './lib/types';\n\n// ─── Re-export Core Types ───────────────────────────────────────────────────\n\nexport type {\n CellRef,\n CellRange,\n CellPosition,\n ColumnDef,\n GridOptions,\n GridState,\n GridStateSnapshot,\n ColumnStateSnapshot,\n GridExportOptions,\n GridEvents,\n SortState,\n SortDescriptor,\n FilterModel,\n FilterAst,\n FilterAstNode,\n FilterAstTarget,\n FilterValueType,\n QueryState,\n QueryPaginationState,\n DataLoadRequest,\n DataLoadResponse,\n RenderParams,\n EditorParams,\n HeaderRenderParams,\n GridPlugin,\n GridStore,\n GridApiInterface,\n GridPluginSetupContext,\n GridOptionsChange,\n GridOptionsListener,\n CellRenderer,\n CellEditor,\n HeaderRenderer,\n} from './lib/types';\n\n// ─── Re-export Core Renderers ───────────────────────────────────────────────\n\nexport {\n // Standard renderers\n TextRenderer,\n NumberRenderer,\n ImageRenderer,\n AdvancedCellRenderer,\n // Interactive renderers\n CheckboxRenderer,\n ProgressBarRenderer,\n ButtonRenderer,\n LinkRenderer,\n ChipRenderer,\n SelectRenderer,\n DropdownRenderer,\n // Date renderers\n DateRenderer,\n DateRangeRenderer,\n // DateTime suite renderers\n DatePickerRenderer,\n createDatePickerRenderer,\n TimePickerRenderer,\n createTimePickerRenderer,\n DateTimePickerRenderer,\n createDateTimePickerRenderer,\n TimeRenderer,\n createTimeRenderer,\n DateTimeRenderer,\n createDateTimeRenderer,\n // Renderer infrastructure\n RendererRegistry,\n} from '@zengrid/core';\n\nexport type {\n NumberRendererOptions,\n ImageRendererOptions,\n AdvancedCellRendererOptions,\n CompositeElement,\n ConditionalStyle,\n CheckboxRendererOptions,\n ProgressBarRendererOptions,\n LinkRendererOptions,\n ButtonRendererOptions,\n ChipRendererOptions,\n Chip,\n SelectRendererOptions,\n SelectOption,\n DropdownRendererOptions,\n DateRendererOptions,\n DateRangeRendererOptions,\n DatePickerRendererOptions,\n TimePickerRendererOptions,\n DateTimePickerRendererOptions,\n TimeRendererOptions,\n DateTimeRendererOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Core Header Renderers ────────────────────────────────────────\n\nexport {\n TextHeaderRenderer,\n SortableHeaderRenderer,\n FilterableHeaderRenderer,\n CheckboxHeaderRenderer,\n IconHeaderRenderer,\n} from '@zengrid/core';\n\nexport type { ResolvedHeaderConfig } from '@zengrid/core';\n\n// ─── Re-export Core Editors ─────────────────────────────────────────────────\n\nexport {\n TextEditor,\n CheckboxEditor,\n DropdownEditor,\n DateEditor,\n DateRangeEditor,\n TimeEditor,\n DateTimeEditor,\n EditorManager,\n} from '@zengrid/core';\n\nexport type {\n TextEditorOptions,\n CheckboxEditorOptions,\n DropdownEditorOptions,\n DropdownOption,\n DateEditorOptions,\n DateRangeEditorOptions,\n TimeEditorOptions,\n DateTimeEditorOptions,\n EditorManagerOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Core Plugins ─────────────────────────────────────────────────\n\nexport {\n createCorePlugin,\n createSortPlugin,\n createFilterPlugin,\n createSelectionPlugin,\n createEditingPlugin,\n createUndoRedoPlugin,\n createDevToolsConnector,\n createAsyncSortPlugin,\n createAsyncFilterPlugin,\n createLifecyclePlugin,\n PluginHost,\n GridApiImpl,\n} from '@zengrid/core';\n\nexport type {\n CorePluginOptions,\n SortPluginOptions,\n FilterPluginOptions,\n SelectionPluginOptions,\n EditingPluginOptions,\n UndoRedoPluginOptions,\n DevToolsConnectorOptions,\n AsyncSortPluginOptions,\n AsyncFilterPluginOptions,\n LifecyclePluginOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Theming ──────────────────────────────────────────────────────\n\nexport {\n applyTheme,\n removeTheme,\n themeToCSSVariables,\n registerTheme,\n getTheme,\n hasTheme,\n listThemes,\n getAllThemes,\n unregisterTheme,\n ThemeBuilder,\n createTheme,\n lighten,\n darken,\n alpha,\n // Theme presets\n lightTheme,\n darkTheme,\n materialTheme,\n githubTheme,\n nordTheme,\n draculaTheme,\n oneDarkTheme,\n solarizedTheme,\n} from '@zengrid/core';\n\nexport type {\n ZenGridTheme,\n PartialTheme,\n ThemeColors,\n ThemeTypography,\n ThemeSpacing,\n ThemeBorders,\n ThemeShadows,\n ThemeTransitions,\n} from '@zengrid/core';\n\n// ─── Re-export Sorting ──────────────────────────────────────────────────────\n\nexport { SingleColumnSorter, MultiColumnSorter, SortStateManager } from '@zengrid/core';\n\nexport type { SortOptions, NullPosition } from '@zengrid/core';\n\n// ─── Re-export Column Features ──────────────────────────────────────────────\n\nexport {\n ColumnModel,\n ColumnReorderPlugin,\n ColumnPinPlugin,\n ColumnVisibilityPlugin,\n ColumnResizeManager,\n AutoFitCalculator,\n ResizeHandleRenderer,\n ResizePreview,\n ColumnDragManager,\n DragVisualFeedback,\n DragKeyboardHandler,\n DragTouchHandler,\n ColumnDragCommand,\n ColumnGroupManager,\n ColumnGroupModel,\n ColumnGroupRenderer,\n createColumnGroupRenderer,\n} from '@zengrid/core';\n\nexport type {\n ColumnState,\n ColumnEvent,\n ColumnEventType,\n ColumnPinPosition,\n ColumnBatchUpdate,\n ColumnConstraints,\n ColumnResizeOptions,\n ResizeState,\n ResizeZoneResult,\n AutoFitCalculatorOptions,\n DragState,\n DragEvent,\n DropPosition,\n ColumnDragOptions,\n AutoScrollOptions,\n DragStateSnapshot,\n DropZoneResult,\n ColumnDragEvents,\n ColumnGroup,\n ColumnGroupModelConfig,\n ColumnGroupRenderParams,\n ColumnGroupRendererOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Viewport & Scroll ────────────────────────────────────────────\n\nexport { ScrollModel, ViewportModel } from '@zengrid/core';\n\nexport type {\n ScrollState,\n ViewportState,\n ScrollEvent,\n ScrollEventType,\n ViewportEvent,\n ViewportEventType,\n} from '@zengrid/core';\n\n// ─── Re-export Selection Utilities ──────────────────────────────────────────\n\nexport {\n normalizeRange,\n mergeRanges,\n containsCell,\n rangesIntersect,\n createHitTester,\n} from '@zengrid/core';\n\n// ─── Re-export DateTime Utilities ───────────────────────────────────────────\n\nexport {\n setDatetimeTheme,\n setDatetimeThemeConfig,\n parseDate,\n parseTime,\n parseDateTime,\n formatDate,\n formatDateForDisplay,\n formatTime,\n formatDateTime,\n formatDateRange,\n isValidDate,\n isDateInRange,\n} from '@zengrid/core';\n\nexport type { DatetimeTheme } from '@zengrid/core';\n\n// ─── Re-export Keyboard & Accessibility ─────────────────────────────────────\n\nexport { KeyboardNavigator, ARIAManager, FocusManager } from '@zengrid/core';\n\nexport type {\n KeyboardNavigatorOptions,\n ARIAManagerOptions,\n FocusManagerOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Data & Utilities ─────────────────────────────────────────────\n\nexport {\n SparseMatrix,\n ColumnStore,\n createIndexMap,\n createIdentityIndexMap,\n ClipboardManager,\n CSVExporter,\n DependencyGraph,\n EventEmitter,\n GridStore as CoreGridStore,\n PipelineRegistry,\n} from '@zengrid/core';\n\nexport type {\n SparseMatrixOptions,\n ReadonlySparseMatrix,\n ColumnStoreOptions,\n ColumnDefinition,\n ColumnType,\n AggregateOperation,\n AggregationResult,\n IndexMap,\n IndexMapOptions,\n DataAccessor,\n StoreKeys,\n WrappedSignal,\n WrappedComputed,\n AsyncState,\n AsyncComputedOptions,\n} from '@zengrid/core';\n\n// ─── Re-export Grid API Types ───────────────────────────────────────────────\n\nexport type {\n SortApi,\n FilterApi,\n PaginationApi,\n ColumnApi,\n ScrollApi,\n StateApi,\n ExportApi,\n} from '@zengrid/core';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|