UNPKG

lumarc-grid

Version:

lumArc Grid는 고성능, 유연하고 프레임워크에 구애받지 않는 데이터 그리드 라이브러리

180 lines 5.11 kB
/** * Enhanced Row Manager with Visual Delete Marking * - 삭제 시 행을 숨기지 않고 "삭제 표시"만 함 * - 실제 삭제는 커밋 시에만 수행 * - ID 안정성 보장 및 변경 추적 완벽 지원 */ export type RowId = string | number; export interface RowState { isDeleted: boolean; isCreated: boolean; isModified: boolean; deletedAt?: Date; createdAt?: Date; modifiedAt?: Date; } export interface ManagedRow<T> { id: RowId; data: T; state: RowState; originalData?: T; } export interface RowManagerOptions<T> { data: T[]; getRowId?: (row: T, index: number) => RowId; } export declare class RowManager<T extends {} = any> { private rows; private rowMap; private getRowId?; private sortedIndices?; private filteredIndices?; private isDirty; constructor(options: RowManagerOptions<T>); private initializeFromData; private invalidateCache; /** * 🎯 모든 데이터 반환 (삭제 표시된 것도 포함) - 기존 API 호환 * 삭제 표시된 행도 그리드에 계속 보여야 함! */ getData(): T[]; /** * 전체 데이터 길이 - 기존 API 호환 */ getLength(): number; /** * Row ID로 관리 객체 가져오기 (UI 스타일링용) */ getManagedRow(rowId: RowId): ManagedRow<T> | undefined; /** * Row ID로 데이터 가져오기 - 기존 API 호환 */ getRowById(rowId: RowId): T | undefined; /** * 인덱스로 데이터 가져오기 - 기존 API 호환 */ getRowByIndex(index: number): T | undefined; /** * Row ID로 인덱스 가져오기 - 기존 API 호환 */ getIndexByRowId(rowId: RowId): number | undefined; /** * 인덱스로 Row ID 가져오기 - 기존 API 호환 */ getRowIdByIndex(index: number): RowId | undefined; /** * 행 데이터 업데이트 - 기존 API 호환 */ updateRow(rowId: RowId, changes: Partial<T>): boolean; addRow(row: T): RowId; addRowAtPosition(row: T, position: number): RowId; deleteRow(rowId: RowId): boolean; /** * 🎯 여러 행 삭제 표시 */ deleteRows(rowIds: RowId[]): number; /** * 삭제 표시 제거 (삭제 취소) */ restoreRow(rowId: RowId): boolean; /** * 정렬 - 기존 API 호환 */ sort(compareFn: (a: T, b: T) => number): number[]; /** * 필터링 - 기존 API 호환 */ filter(predicate: (row: T, index: number) => boolean): number[]; /** * 화면 표시 인덱스로 행 데이터 가져오기 - 기존 API 호환 */ getRowByDisplayIndex(displayIndex: number): T | undefined; /** * 화면 표시 인덱스로 Row ID 가져오기 - 기존 API 호환 */ getRowIdByDisplayIndex(displayIndex: number): RowId | undefined; /** * 화면에 표시되는 데이터 길이 - 기존 API 호환 */ getDisplayLength(): number; /** * 변경 추적 정보 가져오기 - 새로운 기능 */ getChanges(): { created: T[]; modified: Array<{ original: T; current: T; changedFields: string[]; }>; deleted: T[]; }; private getChangedFields; /** * 🎯 변경사항 커밋 - 삭제 표시된 항목들을 실제로 제거 */ commitChanges(): void; /** * 모든 변경사항 되돌리기 */ resetChanges(): void; /** * 상태 확인 메서드들 */ isRowCreated(rowId: RowId): boolean; isRowModified(rowId: RowId): boolean; isRowDeleted(rowId: RowId): boolean; getModifiedFields(rowId: RowId): string[]; /** * 변경사항 요약 */ getChangesSummary(): { created: number; modified: number; deleted: number; }; /** * 변경사항 존재 여부 */ hasChanges(): boolean; /** * 현재 상태 정보 (디버깅용) - 기존 API 호환 */ getStats(): { dataLength: number; total: number; deleted: number; created: number; modified: number; sortedLength: number; filteredLength: number; displayLength: number; isDirty: boolean; memoryUsage: { rows: number; rowMap: number; }; }; /** * 모든 Row ID 반환 - 기존 API 호환 */ getAllRowIds(): RowId[]; getDisplayRowIds(): RowId[]; /** * 데이터 완전 교체 - 기존 API 호환 */ setData(newData: T[]): void; /** * Row ID로 행 데이터 가져오기 (별칭) - 기존 API 호환 */ getRowByRowId(rowId: RowId): T | undefined; /** * 행 데이터로 Row ID 가져오기 - 기존 API 호환 */ getRowIdByData(row: T): RowId | undefined; /** * 데이터 업데이트 (외부에서 새로운 데이터 설정) - 기존 API 호환 */ updateData(newData: T[], newGetRowId?: (row: T, index: number) => RowId): void; } //# sourceMappingURL=row-manager.d.ts.map