UNPKG

@tanstack/angular-table

Version:

Headless UI for building powerful tables & datagrids for Angular.

48 lines (42 loc) 1.22 kB
import { untracked } from '@angular/core' /** * Implementation from @tanstack/angular-query * {@link https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/util/lazy-init/lazy-init.ts} */ export function lazyInit<T extends object>(initializer: () => T): T { let object: T | null = null const initializeObject = () => { if (!object) { object = untracked(() => initializer()) } } queueMicrotask(() => initializeObject()) const table = () => {} return new Proxy<T>(table as T, { apply(target: T, thisArg: any, argArray: any[]): any { initializeObject() if (typeof object === 'function') { return Reflect.apply(object, thisArg, argArray) } return Reflect.apply(target as any, thisArg, argArray) }, get(_, prop, receiver) { initializeObject() return Reflect.get(object as T, prop, receiver) }, has(_, prop) { initializeObject() return Reflect.has(object as T, prop) }, ownKeys() { initializeObject() return Reflect.ownKeys(object as T) }, getOwnPropertyDescriptor() { return { enumerable: true, configurable: true, } }, }) }