@tanstack/angular-virtual
Advanced tools
@@ -38,3 +38,7 @@ import { DestroyRef, afterNextRender, computed, effect, inject, signal, untracked, } from '@angular/core'; | ||
| let cleanup; | ||
| afterNextRender({ read: () => (virtualizer ?? lazyInit())._didMount() }); | ||
| afterNextRender({ | ||
| read: () => { | ||
| cleanup = (virtualizer ?? lazyInit())._didMount(); | ||
| }, | ||
| }); | ||
| inject(DestroyRef).onDestroy(() => cleanup?.()); | ||
@@ -76,2 +80,2 @@ return proxyVirtualizer(virtualizerSignal, lazyInit); | ||
| } | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQ0wsV0FBVyxFQUNYLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsWUFBWSxHQUNiLE1BQU0sd0JBQXdCLENBQUE7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBSzFDLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxTQUFTLENBQUE7QUFFdkIsU0FBUyxxQkFBcUIsQ0FJNUIsT0FBaUU7SUFFakUsSUFBSSxXQUFzRCxDQUFBO0lBQzFELFNBQVMsUUFBUTtRQUNmLFdBQVcsS0FBSyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQzFDLE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxXQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUV0RSx1QkFBdUI7SUFDdkIsTUFBTSxDQUNKLEdBQUcsRUFBRTtRQUNILE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxDQUFBO1FBQzFCLFFBQVEsRUFBRSxDQUFBO1FBQ1YsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ2xDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDckIsR0FBRyxRQUFRO1lBQ1gsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUMzQixrRUFBa0U7Z0JBQ2xFLGlCQUFpQixD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Q29udGVudCI6WyJpbXBvcnQge1xuICBEZXN0cm95UmVmLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBWaXJ0dWFsaXplcixcbiAgZWxlbWVudFNjcm9sbCxcbiAgb2JzZXJ2ZUVsZW1lbnRPZmZzZXQsXG4gIG9ic2VydmVFbGVtZW50UmVjdCxcbiAgb2JzZXJ2ZVdpbmRvd09mZnNldCxcbiAgb2JzZXJ2ZVdpbmRvd1JlY3QsXG4gIHdpbmRvd1Njcm9sbCxcbn0gZnJvbSAnQHRhbnN0YWNrL3ZpcnR1YWwtY29yZSdcbmltcG9ydCB7IHByb3h5VmlydHVhbGl6ZXIgfSBmcm9tICcuL3Byb3h5J1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50UmVmLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHR5cGUgeyBQYXJ0aWFsS2V5cywgVmlydHVhbGl6ZXJPcHRpb25zIH0gZnJvbSAnQHRhbnN0YWNrL3ZpcnR1YWwtY29yZSdcbmltcG9ydCB0eXBlIHsgQW5ndWxhclZpcnR1YWxpemVyIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0ICogZnJvbSAnQHRhbnN0YWNrL3ZpcnR1YWwtY29yZSdcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnXG5cbmZ1bmN0aW9uIGNyZWF0ZVZpcnR1YWxpemVyQmFzZTxcbiAgVFNjcm9sbEVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50IHwgV2luZG93LFxuICBUSXRlbUVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50LFxuPihcbiAgb3B0aW9uczogU2lnbmFsPFZpcnR1YWxpemVyT3B0aW9uczxUU2Nyb2xsRWxlbWVudCwgVEl0ZW1FbGVtZW50Pj4sXG4pOiBBbmd1bGFyVmlydHVhbGl6ZXI8VFNjcm9sbEVsZW1lbnQsIFRJdGVtRWxlbWVudD4ge1xuICBsZXQgdmlydHVhbGl6ZXI6IFZpcnR1YWxpemVyPFRTY3JvbGxFbGVtZW50LCBUSXRlbUVsZW1lbnQ+XG4gIGZ1bmN0aW9uIGxhenlJbml0KCkge1xuICAgIHZpcnR1YWxpemVyID8/PSBuZXcgVmlydHVhbGl6ZXIob3B0aW9ucygpKVxuICAgIHJldHVybiB2aXJ0dWFsaXplclxuICB9XG5cbiAgY29uc3QgdmlydHVhbGl6ZXJTaWduYWwgPSBzaWduYWwodmlydHVhbGl6ZXIhLCB7IGVxdWFsOiAoKSA9PiBmYWxzZSB9KVxuXG4gIC8vIHR3by13YXkgc3luYyBvcHRpb25zXG4gIGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBfb3B0aW9ucyA9IG9wdGlvbnMoKVxuICAgICAgbGF6eUluaXQoKVxuICAgICAgdmlydHVhbGl6ZXJTaWduYWwuc2V0KHZpcnR1YWxpemVyKVxuICAgICAgdmlydHVhbGl6ZXIuc2V0T3B0aW9ucyh7XG4gICAgICAgIC4uLl9vcHRpb25zLFxuICAgICAgICBvbkNoYW5nZTogKGluc3RhbmNlLCBzeW5jKSA9PiB7XG4gICAgICAgICAgLy8gdXBkYXRlIHZpcnR1YWxpemVyU2lnbmFsIHNvIHRoYXQgZGVwZW5kZW50IGNvbXB1dGVkcyByZWNvbXB1dGUuXG4gICAgICAgICAgdmlydHVhbGl6ZXJTaWduYWwuc2V0KGluc3RhbmNlKVxuICAgICAgICAgIF9vcHRpb25zLm9uQ2hhbmdlPy4oaW5zdGFuY2UsIHN5bmMpXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLy8gdXBkYXRlIHZpcnR1YWxpemVyU2lnbmFsIHNvIHRoYXQgZGVwZW5kZW50IGNvbXB1dGVkcyByZWNvbXB1dGUuXG4gICAgICB2aXJ0dWFsaXplclNpZ25hbC5zZXQodmlydHVhbGl6ZXIpXG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gIClcblxuICBjb25zdCBzY3JvbGxFbGVtZW50ID0gY29tcHV0ZWQoKCkgPT4gb3B0aW9ucygpLmdldFNjcm9sbEVsZW1lbnQoKSlcbiAgLy8gbGV0IHRoZSB2aXJ0dWFsaXplciBrbm93IHdoZW4gdGhlIHNjcm9sbCBlbGVtZW50IGlzIGNoYW5nZWRcbiAgZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gc2Nyb2xsRWxlbWVudCgpXG4gICAgICBpZiAoZWwpIHtcbiAgICAgICAgdW50cmFja2VkKHZpcnR1YWxpemVyU2lnbmFsKS5fd2lsbFVwZGF0ZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gIClcblxuICBsZXQgY2xlYW51cDogKCkgPT4gdm9pZCB8IHVuZGVmaW5lZFxuICBhZnRlck5leHRSZW5kZXIoeyByZWFkOiAoKSA9PiAodmlydHVhbGl6ZXIgPz8gbGF6eUluaXQoKSkuX2RpZE1vdW50KCkgfSlcblxuICBpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IGNsZWFudXA/LigpKVxuXG4gIHJldHVybiBwcm94eVZpcnR1YWxpemVyKHZpcnR1YWxpemVyU2lnbmFsLCBsYXp5SW5pdClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFZpcnR1YWxpemVyPFxuICBUU2Nyb2xsRWxlbWVudCBleHRlbmRzIEVsZW1lbnQsXG4gIFRJdGVtRWxlbWVudCBleHRlbmRzIEVsZW1lbnQsXG4+KFxuICBvcHRpb25zOiAoKSA9PiBQYXJ0aWFsS2V5czxcbiAgICBPbWl0PFZpcnR1YWxpemVyT3B0aW9uczxUU2Nyb2xsRWxlbWVudCwgVEl0ZW1FbGVtZW50PiwgJ2dldFNjcm9sbEVsZW1lbnQnPixcbiAgICAnb2JzZXJ2ZUVsZW1lbnRSZWN0JyB8ICdvYnNlcnZlRWxlbWVudE9mZnNldCcgfCAnc2Nyb2xsVG9GbidcbiAgPiAmIHtcbiAgICBzY3JvbGxFbGVtZW50OiBFbGVtZW50UmVmPFRTY3JvbGxFbGVtZW50PiB8IFRTY3JvbGxFbGVtZW50IHwgdW5kZWZpbmVkXG4gIH0sXG4pOiBBbmd1bGFyVmlydHVhbGl6ZXI8VFNjcm9sbEVsZW1lbnQsIFRJdGVtRWxlbWVudD4ge1xuICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9ic2VydmVFbGVtZW50UmVjdDogb2JzZXJ2ZUVsZW1lbnRSZWN0LFxuICAgICAgb2JzZXJ2ZUVsZW1lbnRPZmZzZXQ6IG9ic2VydmVFbGVtZW50T2Zmc2V0LFxuICAgICAgc2Nyb2xsVG9GbjogZWxlbWVudFNjcm9sbCxcbiAgICAgIGdldFNjcm9sbEVsZW1lbnQ6ICgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudE9yUmVmID0gb3B0aW9ucygpLnNjcm9sbEVsZW1lbnRcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAoaXNFbGVtZW50UmVmKGVsZW1lbnRPclJlZilcbiAgICAgICAgICAgID8gZWxlbWVudE9yUmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgIDogZWxlbWVudE9yUmVmKSA/PyBudWxsXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICAuLi5vcHRpb25zKCksXG4gICAgfVxuICB9KVxuICByZXR1cm4gY3JlYXRlVmlydHVhbGl6ZXJCYXNlPFRTY3JvbGxFbGVtZW50LCBUSXRlbUVsZW1lbnQ+KHJlc29sdmVkT3B0aW9ucylcbn1cblxuZnVuY3Rpb24gaXNFbGVtZW50UmVmPFQgZXh0ZW5kcyBFbGVtZW50PihcbiAgZWxlbWVudE9yUmVmOiBFbGVtZW50UmVmPFQ+IHwgVCB8IHVuZGVmaW5lZCxcbik6IGVsZW1lbnRPclJlZiBpcyBFbGVtZW50UmVmPFQ+IHtcbiAgcmV0dXJuIGVsZW1lbnRPclJlZiAhPSBudWxsICYmICduYXRpdmVFbGVtZW50JyBpbiBlbGVtZW50T3JSZWZcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFdpbmRvd1ZpcnR1YWxpemVyPFRJdGVtRWxlbWVudCBleHRlbmRzIEVsZW1lbnQ+KFxuICBvcHRpb25zOiAoKSA9PiBQYXJ0aWFsS2V5czxcbiAgICBWaXJ0dWFsaXplck9wdGlvbnM8V2luZG93LCBUSXRlbUVsZW1lbnQ+LFxuICAgIHwgJ2dldFNjcm9sbEVsZW1lbnQnXG4gICAgfCAnb2JzZXJ2ZUVsZW1lbnRSZWN0J1xuICAgIHwgJ29ic2VydmVFbGVtZW50T2Zmc2V0J1xuICAgIHwgJ3Njcm9sbFRvRm4nXG4gID4sXG4pOiBBbmd1bGFyVmlydHVhbGl6ZXI8V2luZG93LCBUSXRlbUVsZW1lbnQ+IHtcbiAgY29uc3QgcmVzb2x2ZWRPcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBnZXRTY3JvbGxFbGVtZW50OiAoKSA9PiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdyA6IG51bGwpLFxuICAgICAgb2JzZXJ2ZUVsZW1lbnRSZWN0OiBvYnNlcnZlV2luZG93UmVjdCxcbiAgICAgIG9ic2VydmVFbGVtZW50T2Zmc2V0OiBvYnNlcnZlV2luZG93T2Zmc2V0LFxuICAgICAgc2Nyb2xsVG9Gbjogd2luZG93U2Nyb2xsLFxuICAgICAgaW5pdGlhbE9mZnNldDogKCkgPT5cbiAgICAgICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5zY3JvbGxZIDogMCxcbiAgICAgIC4uLm9wdGlvbnMoKSxcbiAgICB9XG4gIH0pXG4gIHJldHVybiBjcmVhdGVWaXJ0dWFsaXplckJhc2U8V2luZG93LCBUSXRlbUVsZW1lbnQ+KHJlc29sdmVkT3B0aW9ucylcbn1cbiJdfQ== | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFDVixlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQ0wsV0FBVyxFQUNYLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsWUFBWSxHQUNiLE1BQU0sd0JBQXdCLENBQUE7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBSzFDLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyxTQUFTLENBQUE7QUFFdkIsU0FBUyxxQkFBcUIsQ0FJNUIsT0FBaUU7SUFFakUsSUFBSSxXQUFzRCxDQUFBO0lBQzFELFNBQVMsUUFBUTtRQUNmLFdBQVcsS0FBSyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQzFDLE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxXQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUV0RSx1QkFBdUI7SUFDdkIsTUFBTSxDQUNKLEdBQUcsRUFBRTtRQUNILE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxDQUFBO1FBQzFCLFFBQVEsRUFBRSxDQUFBO1FBQ1YsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ2xDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDckIsR0FBRyxRQUFRO1lBQ1gsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUMzQixrRUFBa0U7Z0JBQ2xFLGlCQUFpQixD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Q0FBQTtBQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGVzdHJveVJlZixcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgVmlydHVhbGl6ZXIsXG4gIGVsZW1lbnRTY3JvbGwsXG4gIG9ic2VydmVFbGVtZW50T2Zmc2V0LFxuICBvYnNlcnZlRWxlbWVudFJlY3QsXG4gIG9ic2VydmVXaW5kb3dPZmZzZXQsXG4gIG9ic2VydmVXaW5kb3dSZWN0LFxuICB3aW5kb3dTY3JvbGwsXG59IGZyb20gJ0B0YW5zdGFjay92aXJ0dWFsLWNvcmUnXG5pbXBvcnQgeyBwcm94eVZpcnR1YWxpemVyIH0gZnJvbSAnLi9wcm94eSdcbmltcG9ydCB0eXBlIHsgRWxlbWVudFJlZiwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB0eXBlIHsgUGFydGlhbEtleXMsIFZpcnR1YWxpemVyT3B0aW9ucyB9IGZyb20gJ0B0YW5zdGFjay92aXJ0dWFsLWNvcmUnXG5pbXBvcnQgdHlwZSB7IEFuZ3VsYXJWaXJ0dWFsaXplciB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCAqIGZyb20gJ0B0YW5zdGFjay92aXJ0dWFsLWNvcmUnXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJ1xuXG5mdW5jdGlvbiBjcmVhdGVWaXJ0dWFsaXplckJhc2U8XG4gIFRTY3JvbGxFbGVtZW50IGV4dGVuZHMgRWxlbWVudCB8IFdpbmRvdyxcbiAgVEl0ZW1FbGVtZW50IGV4dGVuZHMgRWxlbWVudCxcbj4oXG4gIG9wdGlvbnM6IFNpZ25hbDxWaXJ0dWFsaXplck9wdGlvbnM8VFNjcm9sbEVsZW1lbnQsIFRJdGVtRWxlbWVudD4+LFxuKTogQW5ndWxhclZpcnR1YWxpemVyPFRTY3JvbGxFbGVtZW50LCBUSXRlbUVsZW1lbnQ+IHtcbiAgbGV0IHZpcnR1YWxpemVyOiBWaXJ0dWFsaXplcjxUU2Nyb2xsRWxlbWVudCwgVEl0ZW1FbGVtZW50PlxuICBmdW5jdGlvbiBsYXp5SW5pdCgpIHtcbiAgICB2aXJ0dWFsaXplciA/Pz0gbmV3IFZpcnR1YWxpemVyKG9wdGlvbnMoKSlcbiAgICByZXR1cm4gdmlydHVhbGl6ZXJcbiAgfVxuXG4gIGNvbnN0IHZpcnR1YWxpemVyU2lnbmFsID0gc2lnbmFsKHZpcnR1YWxpemVyISwgeyBlcXVhbDogKCkgPT4gZmFsc2UgfSlcblxuICAvLyB0d28td2F5IHN5bmMgb3B0aW9uc1xuICBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgX29wdGlvbnMgPSBvcHRpb25zKClcbiAgICAgIGxhenlJbml0KClcbiAgICAgIHZpcnR1YWxpemVyU2lnbmFsLnNldCh2aXJ0dWFsaXplcilcbiAgICAgIHZpcnR1YWxpemVyLnNldE9wdGlvbnMoe1xuICAgICAgICAuLi5fb3B0aW9ucyxcbiAgICAgICAgb25DaGFuZ2U6IChpbnN0YW5jZSwgc3luYykgPT4ge1xuICAgICAgICAgIC8vIHVwZGF0ZSB2aXJ0dWFsaXplclNpZ25hbCBzbyB0aGF0IGRlcGVuZGVudCBjb21wdXRlZHMgcmVjb21wdXRlLlxuICAgICAgICAgIHZpcnR1YWxpemVyU2lnbmFsLnNldChpbnN0YW5jZSlcbiAgICAgICAgICBfb3B0aW9ucy5vbkNoYW5nZT8uKGluc3RhbmNlLCBzeW5jKVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC8vIHVwZGF0ZSB2aXJ0dWFsaXplclNpZ25hbCBzbyB0aGF0IGRlcGVuZGVudCBjb21wdXRlZHMgcmVjb21wdXRlLlxuICAgICAgdmlydHVhbGl6ZXJTaWduYWwuc2V0KHZpcnR1YWxpemVyKVxuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICApXG5cbiAgY29uc3Qgc2Nyb2xsRWxlbWVudCA9IGNvbXB1dGVkKCgpID0+IG9wdGlvbnMoKS5nZXRTY3JvbGxFbGVtZW50KCkpXG4gIC8vIGxldCB0aGUgdmlydHVhbGl6ZXIga25vdyB3aGVuIHRoZSBzY3JvbGwgZWxlbWVudCBpcyBjaGFuZ2VkXG4gIGVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBlbCA9IHNjcm9sbEVsZW1lbnQoKVxuICAgICAgaWYgKGVsKSB7XG4gICAgICAgIHVudHJhY2tlZCh2aXJ0dWFsaXplclNpZ25hbCkuX3dpbGxVcGRhdGUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICApXG5cbiAgbGV0IGNsZWFudXA6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZFxuICBhZnRlck5leHRSZW5kZXIoe1xuICAgIHJlYWQ6ICgpID0+IHtcbiAgICAgIGNsZWFudXAgPSAodmlydHVhbGl6ZXIgPz8gbGF6eUluaXQoKSkuX2RpZE1vdW50KClcbiAgICB9LFxuICB9KVxuXG4gIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4gY2xlYW51cD8uKCkpXG5cbiAgcmV0dXJuIHByb3h5VmlydHVhbGl6ZXIodmlydHVhbGl6ZXJTaWduYWwsIGxhenlJbml0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VmlydHVhbGl6ZXI8XG4gIFRTY3JvbGxFbGVtZW50IGV4dGVuZHMgRWxlbWVudCxcbiAgVEl0ZW1FbGVtZW50IGV4dGVuZHMgRWxlbWVudCxcbj4oXG4gIG9wdGlvbnM6ICgpID0+IFBhcnRpYWxLZXlzPFxuICAgIE9taXQ8VmlydHVhbGl6ZXJPcHRpb25zPFRTY3JvbGxFbGVtZW50LCBUSXRlbUVsZW1lbnQ+LCAnZ2V0U2Nyb2xsRWxlbWVudCc+LFxuICAgICdvYnNlcnZlRWxlbWVudFJlY3QnIHwgJ29ic2VydmVFbGVtZW50T2Zmc2V0JyB8ICdzY3JvbGxUb0ZuJ1xuICA+ICYge1xuICAgIHNjcm9sbEVsZW1lbnQ6IEVsZW1lbnRSZWY8VFNjcm9sbEVsZW1lbnQ+IHwgVFNjcm9sbEVsZW1lbnQgfCB1bmRlZmluZWRcbiAgfSxcbik6IEFuZ3VsYXJWaXJ0dWFsaXplcjxUU2Nyb2xsRWxlbWVudCwgVEl0ZW1FbGVtZW50PiB7XG4gIGNvbnN0IHJlc29sdmVkT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgb2JzZXJ2ZUVsZW1lbnRSZWN0OiBvYnNlcnZlRWxlbWVudFJlY3QsXG4gICAgICBvYnNlcnZlRWxlbWVudE9mZnNldDogb2JzZXJ2ZUVsZW1lbnRPZmZzZXQsXG4gICAgICBzY3JvbGxUb0ZuOiBlbGVtZW50U2Nyb2xsLFxuICAgICAgZ2V0U2Nyb2xsRWxlbWVudDogKCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50T3JSZWYgPSBvcHRpb25zKCkuc2Nyb2xsRWxlbWVudFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChpc0VsZW1lbnRSZWYoZWxlbWVudE9yUmVmKVxuICAgICAgICAgICAgPyBlbGVtZW50T3JSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgOiBlbGVtZW50T3JSZWYpID8/IG51bGxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIC4uLm9wdGlvbnMoKSxcbiAgICB9XG4gIH0pXG4gIHJldHVybiBjcmVhdGVWaXJ0dWFsaXplckJhc2U8VFNjcm9sbEVsZW1lbnQsIFRJdGVtRWxlbWVudD4ocmVzb2x2ZWRPcHRpb25zKVxufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRSZWY8VCBleHRlbmRzIEVsZW1lbnQ+KFxuICBlbGVtZW50T3JSZWY6IEVsZW1lbnRSZWY8VD4gfCBUIHwgdW5kZWZpbmVkLFxuKTogZWxlbWVudE9yUmVmIGlzIEVsZW1lbnRSZWY8VD4ge1xuICByZXR1cm4gZWxlbWVudE9yUmVmICE9IG51bGwgJiYgJ25hdGl2ZUVsZW1lbnQnIGluIGVsZW1lbnRPclJlZlxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0V2luZG93VmlydHVhbGl6ZXI8VEl0ZW1FbGVtZW50IGV4dGVuZHMgRWxlbWVudD4oXG4gIG9wdGlvbnM6ICgpID0+IFBhcnRpYWxLZXlzPFxuICAgIFZpcnR1YWxpemVyT3B0aW9uczxXaW5kb3csIFRJdGVtRWxlbWVudD4sXG4gICAgfCAnZ2V0U2Nyb2xsRWxlbWVudCdcbiAgICB8ICdvYnNlcnZlRWxlbWVudFJlY3QnXG4gICAgfCAnb2JzZXJ2ZUVsZW1lbnRPZmZzZXQnXG4gICAgfCAnc2Nyb2xsVG9GbidcbiAgPixcbik6IEFuZ3VsYXJWaXJ0dWFsaXplcjxXaW5kb3csIFRJdGVtRWxlbWVudD4ge1xuICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFNjcm9sbEVsZW1lbnQ6ICgpID0+ICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogbnVsbCksXG4gICAgICBvYnNlcnZlRWxlbWVudFJlY3Q6IG9ic2VydmVXaW5kb3dSZWN0LFxuICAgICAgb2JzZXJ2ZUVsZW1lbnRPZmZzZXQ6IG9ic2VydmVXaW5kb3dPZmZzZXQsXG4gICAgICBzY3JvbGxUb0ZuOiB3aW5kb3dTY3JvbGwsXG4gICAgICBpbml0aWFsT2Zmc2V0OiAoKSA9PlxuICAgICAgICB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnNjcm9sbFkgOiAwLFxuICAgICAgLi4ub3B0aW9ucygpLFxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGNyZWF0ZVZpcnR1YWxpemVyQmFzZTxXaW5kb3csIFRJdGVtRWxlbWVudD4ocmVzb2x2ZWRPcHRpb25zKVxufVxuIl19 |
@@ -127,3 +127,7 @@ import { untracked, computed, signal, effect, afterNextRender, inject, DestroyRef } from '@angular/core'; | ||
| let cleanup; | ||
| afterNextRender({ read: () => (virtualizer ?? lazyInit())._didMount() }); | ||
| afterNextRender({ | ||
| read: () => { | ||
| cleanup = (virtualizer ?? lazyInit())._didMount(); | ||
| }, | ||
| }); | ||
| inject(DestroyRef).onDestroy(() => cleanup?.()); | ||
@@ -130,0 +134,0 @@ return proxyVirtualizer(virtualizerSignal, lazyInit); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"tanstack-angular-virtual.mjs","sources":["../../src/proxy.ts","../../src/index.ts","../../src/tanstack-angular-virtual.ts"],"sourcesContent":["import { computed, untracked } from '@angular/core'\nimport type { Signal, WritableSignal } from '@angular/core'\nimport type { Virtualizer } from '@tanstack/virtual-core'\nimport type { AngularVirtualizer } from './types'\n\nexport function proxyVirtualizer<\n V extends Virtualizer<any, any>,\n S extends Element | Window = V extends Virtualizer<infer U, any> ? U : never,\n I extends Element = V extends Virtualizer<any, infer U> ? U : never,\n>(\n virtualizerSignal: WritableSignal<V>,\n lazyInit: () => V,\n): AngularVirtualizer<S, I> {\n return new Proxy(virtualizerSignal, {\n apply() {\n return virtualizerSignal()\n },\n get(target, property) {\n const untypedTarget = target as any\n if (untypedTarget[property]) {\n return untypedTarget[property]\n }\n let virtualizer = untracked(virtualizerSignal)\n if (virtualizer == null) {\n virtualizer = lazyInit()\n untracked(() => virtualizerSignal.set(virtualizer))\n }\n\n // Create computed signals for each property that represents a reactive value\n if (\n typeof property === 'string' &&\n [\n 'getTotalSize',\n 'getVirtualItems',\n 'isScrolling',\n 'options',\n 'range',\n 'scrollDirection',\n 'scrollElement',\n 'scrollOffset',\n 'scrollRect',\n 'measureElementCache',\n 'measurementsCache',\n ].includes(property)\n ) {\n const isFunction =\n typeof virtualizer[property as keyof V] === 'function'\n Object.defineProperty(untypedTarget, property, {\n value: isFunction\n ? computed(() => (target()[property as keyof V] as Function)())\n : computed(() => target()[property as keyof V]),\n configurable: true,\n enumerable: true,\n })\n }\n\n // Create plain signals for functions that accept arguments and return reactive values\n if (\n typeof property === 'string' &&\n [\n 'getOffsetForAlignment',\n 'getOffsetForIndex',\n 'getVirtualItemForOffset',\n 'indexFromElement',\n ].includes(property)\n ) {\n const fn = virtualizer[property as keyof V] as Function\n Object.defineProperty(untypedTarget, property, {\n value: toComputed(virtualizerSignal, fn),\n configurable: true,\n enumerable: true,\n })\n }\n\n return untypedTarget[property] || virtualizer[property as keyof V]\n },\n has(_, property: string) {\n return !!untracked(virtualizerSignal)[property as keyof V]\n },\n ownKeys() {\n return Reflect.ownKeys(untracked(virtualizerSignal))\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n }) as unknown as AngularVirtualizer<S, I>\n}\n\nfunction toComputed<V extends Virtualizer<any, any>>(\n signal: Signal<V>,\n fn: Function,\n) {\n const computedCache: Record<string, Signal<unknown>> = {}\n\n return (...args: Array<any>) => {\n // Cache computeds by their arguments to avoid re-creating the computed on each call\n const serializedArgs = serializeArgs(...args)\n if (computedCache.hasOwnProperty(serializedArgs)) {\n return computedCache[serializedArgs]?.()\n }\n const computedSignal = computed(() => {\n void signal()\n return fn(...args)\n })\n\n computedCache[serializedArgs] = computedSignal\n\n return computedSignal()\n }\n}\n\nfunction serializeArgs(...args: Array<any>) {\n return JSON.stringify(args)\n}\n","import {\n DestroyRef,\n afterNextRender,\n computed,\n effect,\n inject,\n signal,\n untracked,\n} from '@angular/core'\nimport {\n Virtualizer,\n elementScroll,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll,\n} from '@tanstack/virtual-core'\nimport { proxyVirtualizer } from './proxy'\nimport type { ElementRef, Signal } from '@angular/core'\nimport type { PartialKeys, VirtualizerOptions } from '@tanstack/virtual-core'\nimport type { AngularVirtualizer } from './types'\n\nexport * from '@tanstack/virtual-core'\nexport * from './types'\n\nfunction createVirtualizerBase<\n TScrollElement extends Element | Window,\n TItemElement extends Element,\n>(\n options: Signal<VirtualizerOptions<TScrollElement, TItemElement>>,\n): AngularVirtualizer<TScrollElement, TItemElement> {\n let virtualizer: Virtualizer<TScrollElement, TItemElement>\n function lazyInit() {\n virtualizer ??= new Virtualizer(options())\n return virtualizer\n }\n\n const virtualizerSignal = signal(virtualizer!, { equal: () => false })\n\n // two-way sync options\n effect(\n () => {\n const _options = options()\n lazyInit()\n virtualizerSignal.set(virtualizer)\n virtualizer.setOptions({\n ..._options,\n onChange: (instance, sync) => {\n // update virtualizerSignal so that dependent computeds recompute.\n virtualizerSignal.set(instance)\n _options.onChange?.(instance, sync)\n },\n })\n // update virtualizerSignal so that dependent computeds recompute.\n virtualizerSignal.set(virtualizer)\n },\n { allowSignalWrites: true },\n )\n\n const scrollElement = computed(() => options().getScrollElement())\n // let the virtualizer know when the scroll element is changed\n effect(\n () => {\n const el = scrollElement()\n if (el) {\n untracked(virtualizerSignal)._willUpdate()\n }\n },\n { allowSignalWrites: true },\n )\n\n let cleanup: () => void | undefined\n afterNextRender({ read: () => (virtualizer ?? lazyInit())._didMount() })\n\n inject(DestroyRef).onDestroy(() => cleanup?.())\n\n return proxyVirtualizer(virtualizerSignal, lazyInit)\n}\n\nexport function injectVirtualizer<\n TScrollElement extends Element,\n TItemElement extends Element,\n>(\n options: () => PartialKeys<\n Omit<VirtualizerOptions<TScrollElement, TItemElement>, 'getScrollElement'>,\n 'observeElementRect' | 'observeElementOffset' | 'scrollToFn'\n > & {\n scrollElement: ElementRef<TScrollElement> | TScrollElement | undefined\n },\n): AngularVirtualizer<TScrollElement, TItemElement> {\n const resolvedOptions = computed(() => {\n return {\n observeElementRect: observeElementRect,\n observeElementOffset: observeElementOffset,\n scrollToFn: elementScroll,\n getScrollElement: () => {\n const elementOrRef = options().scrollElement\n return (\n (isElementRef(elementOrRef)\n ? elementOrRef.nativeElement\n : elementOrRef) ?? null\n )\n },\n ...options(),\n }\n })\n return createVirtualizerBase<TScrollElement, TItemElement>(resolvedOptions)\n}\n\nfunction isElementRef<T extends Element>(\n elementOrRef: ElementRef<T> | T | undefined,\n): elementOrRef is ElementRef<T> {\n return elementOrRef != null && 'nativeElement' in elementOrRef\n}\n\nexport function injectWindowVirtualizer<TItemElement extends Element>(\n options: () => PartialKeys<\n VirtualizerOptions<Window, TItemElement>,\n | 'getScrollElement'\n | 'observeElementRect'\n | 'observeElementOffset'\n | 'scrollToFn'\n >,\n): AngularVirtualizer<Window, TItemElement> {\n const resolvedOptions = computed(() => {\n return {\n getScrollElement: () => (typeof document !== 'undefined' ? window : null),\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () =>\n typeof document !== 'undefined' ? window.scrollY : 0,\n ...options(),\n }\n })\n return createVirtualizerBase<Window, TItemElement>(resolvedOptions)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"tanstack-angular-virtual.mjs","sources":["../../src/proxy.ts","../../src/index.ts","../../src/tanstack-angular-virtual.ts"],"sourcesContent":["import { computed, untracked } from '@angular/core'\nimport type { Signal, WritableSignal } from '@angular/core'\nimport type { Virtualizer } from '@tanstack/virtual-core'\nimport type { AngularVirtualizer } from './types'\n\nexport function proxyVirtualizer<\n V extends Virtualizer<any, any>,\n S extends Element | Window = V extends Virtualizer<infer U, any> ? U : never,\n I extends Element = V extends Virtualizer<any, infer U> ? U : never,\n>(\n virtualizerSignal: WritableSignal<V>,\n lazyInit: () => V,\n): AngularVirtualizer<S, I> {\n return new Proxy(virtualizerSignal, {\n apply() {\n return virtualizerSignal()\n },\n get(target, property) {\n const untypedTarget = target as any\n if (untypedTarget[property]) {\n return untypedTarget[property]\n }\n let virtualizer = untracked(virtualizerSignal)\n if (virtualizer == null) {\n virtualizer = lazyInit()\n untracked(() => virtualizerSignal.set(virtualizer))\n }\n\n // Create computed signals for each property that represents a reactive value\n if (\n typeof property === 'string' &&\n [\n 'getTotalSize',\n 'getVirtualItems',\n 'isScrolling',\n 'options',\n 'range',\n 'scrollDirection',\n 'scrollElement',\n 'scrollOffset',\n 'scrollRect',\n 'measureElementCache',\n 'measurementsCache',\n ].includes(property)\n ) {\n const isFunction =\n typeof virtualizer[property as keyof V] === 'function'\n Object.defineProperty(untypedTarget, property, {\n value: isFunction\n ? computed(() => (target()[property as keyof V] as Function)())\n : computed(() => target()[property as keyof V]),\n configurable: true,\n enumerable: true,\n })\n }\n\n // Create plain signals for functions that accept arguments and return reactive values\n if (\n typeof property === 'string' &&\n [\n 'getOffsetForAlignment',\n 'getOffsetForIndex',\n 'getVirtualItemForOffset',\n 'indexFromElement',\n ].includes(property)\n ) {\n const fn = virtualizer[property as keyof V] as Function\n Object.defineProperty(untypedTarget, property, {\n value: toComputed(virtualizerSignal, fn),\n configurable: true,\n enumerable: true,\n })\n }\n\n return untypedTarget[property] || virtualizer[property as keyof V]\n },\n has(_, property: string) {\n return !!untracked(virtualizerSignal)[property as keyof V]\n },\n ownKeys() {\n return Reflect.ownKeys(untracked(virtualizerSignal))\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n }) as unknown as AngularVirtualizer<S, I>\n}\n\nfunction toComputed<V extends Virtualizer<any, any>>(\n signal: Signal<V>,\n fn: Function,\n) {\n const computedCache: Record<string, Signal<unknown>> = {}\n\n return (...args: Array<any>) => {\n // Cache computeds by their arguments to avoid re-creating the computed on each call\n const serializedArgs = serializeArgs(...args)\n if (computedCache.hasOwnProperty(serializedArgs)) {\n return computedCache[serializedArgs]?.()\n }\n const computedSignal = computed(() => {\n void signal()\n return fn(...args)\n })\n\n computedCache[serializedArgs] = computedSignal\n\n return computedSignal()\n }\n}\n\nfunction serializeArgs(...args: Array<any>) {\n return JSON.stringify(args)\n}\n","import {\n DestroyRef,\n afterNextRender,\n computed,\n effect,\n inject,\n signal,\n untracked,\n} from '@angular/core'\nimport {\n Virtualizer,\n elementScroll,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll,\n} from '@tanstack/virtual-core'\nimport { proxyVirtualizer } from './proxy'\nimport type { ElementRef, Signal } from '@angular/core'\nimport type { PartialKeys, VirtualizerOptions } from '@tanstack/virtual-core'\nimport type { AngularVirtualizer } from './types'\n\nexport * from '@tanstack/virtual-core'\nexport * from './types'\n\nfunction createVirtualizerBase<\n TScrollElement extends Element | Window,\n TItemElement extends Element,\n>(\n options: Signal<VirtualizerOptions<TScrollElement, TItemElement>>,\n): AngularVirtualizer<TScrollElement, TItemElement> {\n let virtualizer: Virtualizer<TScrollElement, TItemElement>\n function lazyInit() {\n virtualizer ??= new Virtualizer(options())\n return virtualizer\n }\n\n const virtualizerSignal = signal(virtualizer!, { equal: () => false })\n\n // two-way sync options\n effect(\n () => {\n const _options = options()\n lazyInit()\n virtualizerSignal.set(virtualizer)\n virtualizer.setOptions({\n ..._options,\n onChange: (instance, sync) => {\n // update virtualizerSignal so that dependent computeds recompute.\n virtualizerSignal.set(instance)\n _options.onChange?.(instance, sync)\n },\n })\n // update virtualizerSignal so that dependent computeds recompute.\n virtualizerSignal.set(virtualizer)\n },\n { allowSignalWrites: true },\n )\n\n const scrollElement = computed(() => options().getScrollElement())\n // let the virtualizer know when the scroll element is changed\n effect(\n () => {\n const el = scrollElement()\n if (el) {\n untracked(virtualizerSignal)._willUpdate()\n }\n },\n { allowSignalWrites: true },\n )\n\n let cleanup: (() => void) | undefined\n afterNextRender({\n read: () => {\n cleanup = (virtualizer ?? lazyInit())._didMount()\n },\n })\n\n inject(DestroyRef).onDestroy(() => cleanup?.())\n\n return proxyVirtualizer(virtualizerSignal, lazyInit)\n}\n\nexport function injectVirtualizer<\n TScrollElement extends Element,\n TItemElement extends Element,\n>(\n options: () => PartialKeys<\n Omit<VirtualizerOptions<TScrollElement, TItemElement>, 'getScrollElement'>,\n 'observeElementRect' | 'observeElementOffset' | 'scrollToFn'\n > & {\n scrollElement: ElementRef<TScrollElement> | TScrollElement | undefined\n },\n): AngularVirtualizer<TScrollElement, TItemElement> {\n const resolvedOptions = computed(() => {\n return {\n observeElementRect: observeElementRect,\n observeElementOffset: observeElementOffset,\n scrollToFn: elementScroll,\n getScrollElement: () => {\n const elementOrRef = options().scrollElement\n return (\n (isElementRef(elementOrRef)\n ? elementOrRef.nativeElement\n : elementOrRef) ?? null\n )\n },\n ...options(),\n }\n })\n return createVirtualizerBase<TScrollElement, TItemElement>(resolvedOptions)\n}\n\nfunction isElementRef<T extends Element>(\n elementOrRef: ElementRef<T> | T | undefined,\n): elementOrRef is ElementRef<T> {\n return elementOrRef != null && 'nativeElement' in elementOrRef\n}\n\nexport function injectWindowVirtualizer<TItemElement extends Element>(\n options: () => PartialKeys<\n VirtualizerOptions<Window, TItemElement>,\n | 'getScrollElement'\n | 'observeElementRect'\n | 'observeElementOffset'\n | 'scrollToFn'\n >,\n): AngularVirtualizer<Window, TItemElement> {\n const resolvedOptions = computed(() => {\n return {\n getScrollElement: () => (typeof document !== 'undefined' ? window : null),\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () =>\n typeof document !== 'undefined' ? window.scrollY : 0,\n ...options(),\n }\n })\n return createVirtualizerBase<Window, TItemElement>(resolvedOptions)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"} |
+1
-1
| { | ||
| "name": "@tanstack/angular-virtual", | ||
| "version": "4.0.12", | ||
| "version": "4.0.13", | ||
| "description": "Headless UI for virtualizing scrollable elements in Angular", | ||
@@ -5,0 +5,0 @@ "author": "Garrett Darnell", |
58252
0.42%371
2.2%