@tanstack/angular-virtual 3.13.11 → 4.0.0
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/build/esm2022/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DestroyRef, afterNextRender, computed, effect, inject, signal, untracked, } from '@angular/core';
|
|
2
2
|
import { Virtualizer, elementScroll, observeElementOffset, observeElementRect, observeWindowOffset, observeWindowRect, windowScroll, } from '@tanstack/virtual-core';
|
|
3
3
|
import { proxyVirtualizer } from './proxy';
|
|
4
4
|
export * from '@tanstack/virtual-core';
|
|
@@ -35,9 +35,7 @@ function createVirtualizerBase(options) {
|
|
|
35
35
|
}
|
|
36
36
|
}, { allowSignalWrites: true });
|
|
37
37
|
let cleanup;
|
|
38
|
-
afterNextRender(() => (virtualizer ?? lazyInit())._didMount()
|
|
39
|
-
phase: AfterRenderPhase.Read,
|
|
40
|
-
});
|
|
38
|
+
afterNextRender({ read: () => (virtualizer ?? lazyInit())._didMount() });
|
|
41
39
|
inject(DestroyRef).onDestroy(() => cleanup?.());
|
|
42
40
|
return proxyVirtualizer(virtualizerSignal, lazyInit);
|
|
43
41
|
}
|
|
@@ -74,4 +72,4 @@ export function injectWindowVirtualizer(options) {
|
|
|
74
72
|
});
|
|
75
73
|
return createVirtualizerBase(resolvedOptions);
|
|
76
74
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# 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==
|
package/build/esm2022/proxy.mjs
CHANGED
|
@@ -88,4 +88,4 @@ function toComputed(signal, fn) {
|
|
|
88
88
|
function serializeArgs(...args) {
|
|
89
89
|
return JSON.stringify(args);
|
|
90
90
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFLbkQsTUFBTSxVQUFVLGdCQUFnQixDQUs5QixpQkFBb0MsRUFDcEMsUUFBaUI7SUFFakIsT0FBTyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtRQUNsQyxLQUFLO1lBQ0gsT0FBTyxpQkFBaUIsRUFBRSxDQUFBO1FBQzVCLENBQUM7UUFDRCxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVE7WUFDbEIsTUFBTSxhQUFhLEdBQUcsTUFBYSxDQUFBO1lBQ25DLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ2hDLENBQUM7WUFDRCxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtZQUM5QyxJQUFJLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDeEIsV0FBVyxHQUFHLFFBQVEsRUFBRSxDQUFBO2dCQUN4QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7WUFDckQsQ0FBQztZQUVELDZFQUE2RTtZQUM3RSxJQUNFLE9BQU8sUUFBUSxLQUFLLFFBQVE7Z0JBQzVCO29CQUNFLGNBQWM7b0JBQ2QsaUJBQWlCO29CQUNqQixhQUFhO29CQUNiLFNBQVM7b0JBQ1QsT0FBTztvQkFDUCxpQkFBaUI7b0JBQ2pCLGVBQWU7b0JBQ2YsY0FBYztvQkFDZCxZQUFZO29CQUNaLHFCQUFxQjtvQkFDckIsbUJBQW1CO2lCQUNwQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFDcEIsQ0FBQztnQkFDRCxNQUFNLFVBQVUsR0FDZCxPQUFPLFdBQVcsQ0FBQyxRQUFtQixDQUFDLEtBQUssVUFBVSxDQUFBO2dCQUN4RCxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUU7b0JBQzdDLEtBQUssRUFBRSxVQUFVO3dCQUNmLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUUsTUFBTSxFQUFFLENBQUMsUUFBbUIsQ0FBYyxFQUFFLENBQUM7d0JBQy9ELENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBbUIsQ0FBQyxDQUFDO29CQUNqRCxZQUFZLEVBQUUsSUFBSTtvQkFDbEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCLENBQUMsQ0FBQTtZQUNKLENBQUM7WUFFRCxzRkFBc0Y7WUFDdEYsSUFDRSxPQUFPLFFBQVEsS0FBSyxRQUFRO2dCQUM1QjtvQkFDRSx1QkFBdUI7b0JBQ3ZCLG1CQUFtQjtvQkFDbkIseUJBQXlCO29CQUN6QixrQkFBa0I7aUJBQ25CLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUNwQixDQUFDO2dCQUNELE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxRQUFtQixDQUFhLENBQUE7Z0JBQ3ZELE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRTtvQkFDN0MsS0FBSyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7b0JBQ3hDLFlBQVksRUFBRSxJQUFJO29CQUNsQixVQUFVLEVBQUUsSUFBSTtpQkFDakIsQ0FBQyxDQUFBO1lBQ0osQ0FBQztZQUVELE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxRQUFtQixDQUFDLENBQUE7UUFDcEUsQ0FBQztRQUNELEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBZ0I7WUFDckIsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsUUFBbUIsQ0FBQyxDQUFBO1FBQzVELENBQUM7UUFDRCxPQUFPO1lBQ0wsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUE7UUFDdEQsQ0FBQztRQUNELHdCQUF3QjtZQUN0QixPQUFPO2dCQUNMLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixZQUFZLEVBQUUsSUFBSTthQUNuQixDQUFBO1FBQ0gsQ0FBQztLQUNGLENBQXdDLENBQUE7QUFDM0MsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUNqQixNQUFpQixFQUNqQixFQUFZO0lBRVosTUFBTSxhQUFhLEdBQW9DLEVBQUUsQ0FBQTtJQUV6RCxPQUFPLENBQUMsR0FBRyxJQUFnQixFQUFFLEVBQUU7UUFDN0Isb0ZBQW9GO1FBQ3BGLE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQzdDLElBQUksYUFBYSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2pELE9BQU8sYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FBQTtRQUMxQyxDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxLQUFLLE1BQU0sRUFBRSxDQUFBO1lBQ2IsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUNwQixDQUFDLENBQUMsQ0FBQTtRQUVGLGFBQWEsQ0FBQyxjQUFjLENBQUMsR0FBRyxjQUFjLENBQUE7UUFFOUMsT0FBTyxjQUFjLEVBQUUsQ0FBQTtJQUN6QixDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsR0FBRyxJQUFnQjtJQUN4QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHR5cGUgeyBTaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB0eXBlIHsgVmlydHVhbGl6ZXIgfSBmcm9tICdAdGFuc3RhY2svdmlydHVhbC1jb3JlJ1xuaW1wb3J0IHR5cGUgeyBBbmd1bGFyVmlydHVhbGl6ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgZnVuY3Rpb24gcHJveHlWaXJ0dWFsaXplcjxcbiAgViBleHRlbmRzIFZpcnR1YWxpemVyPGFueSwgYW55PixcbiAgUyBleHRlbmRzIEVsZW1lbnQgfCBXaW5kb3cgPSBWIGV4dGVuZHMgVmlydHVhbGl6ZXI8aW5mZXIgVSwgYW55PiA/IFUgOiBuZXZlcixcbiAgSSBleHRlbmRzIEVsZW1lbnQgPSBWIGV4dGVuZHMgVmlydHVhbGl6ZXI8YW55LCBpbmZlciBVPiA/IFUgOiBuZXZlcixcbj4oXG4gIHZpcnR1YWxpemVyU2lnbmFsOiBXcml0YWJsZVNpZ25hbDxWPixcbiAgbGF6eUluaXQ6ICgpID0+IFYsXG4pOiBBbmd1bGFyVmlydHVhbGl6ZXI8UywgST4ge1xuICByZXR1cm4gbmV3IFByb3h5KHZpcnR1YWxpemVyU2lnbmFsLCB7XG4gICAgYXBwbHkoKSB7XG4gICAgICByZXR1cm4gdmlydHVhbGl6ZXJTaWduYWwoKVxuICAgIH0sXG4gICAgZ2V0KHRhcmdldCwgcHJvcGVydHkpIHtcbiAgICAgIGNvbnN0IHVudHlwZWRUYXJnZXQgPSB0YXJnZXQgYXMgYW55XG4gICAgICBpZiAodW50eXBlZFRhcmdldFtwcm9wZXJ0eV0pIHtcbiAgICAgICAgcmV0dXJuIHVudHlwZWRUYXJnZXRbcHJvcGVydHldXG4gICAgICB9XG4gICAgICBsZXQgdmlydHVhbGl6ZXIgPSB1bnRyYWNrZWQodmlydHVhbGl6ZXJTaWduYWwpXG4gICAgICBpZiAodmlydHVhbGl6ZXIgPT0gbnVsbCkge1xuICAgICAgICB2aXJ0dWFsaXplciA9IGxhenlJbml0KClcbiAgICAgICAgdW50cmFja2VkKCgpID0+IHZpcnR1YWxpemVyU2lnbmFsLnNldCh2aXJ0dWFsaXplcikpXG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBjb21wdXRlZCBzaWduYWxzIGZvciBlYWNoIHByb3BlcnR5IHRoYXQgcmVwcmVzZW50cyBhIHJlYWN0aXZlIHZhbHVlXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgW1xuICAgICAgICAgICdnZXRUb3RhbFNpemUnLFxuICAgICAgICAgICdnZXRWaXJ0dWFsSXRlbXMnLFxuICAgICAgICAgICdpc1Njcm9sbGluZycsXG4gICAgICAgICAgJ29wdGlvbnMnLFxuICAgICAgICAgICdyYW5nZScsXG4gICAgICAgICAgJ3Njcm9sbERpcmVjdGlvbicsXG4gICAgICAgICAgJ3Njcm9sbEVsZW1lbnQnLFxuICAgICAgICAgICdzY3JvbGxPZmZzZXQnLFxuICAgICAgICAgICdzY3JvbGxSZWN0JyxcbiAgICAgICAgICAnbWVhc3VyZUVsZW1lbnRDYWNoZScsXG4gICAgICAgICAgJ21lYXN1cmVtZW50c0NhY2hlJyxcbiAgICAgICAgXS5pbmNsdWRlcyhwcm9wZXJ0eSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBpc0Z1bmN0aW9uID1cbiAgICAgICAgICB0eXBlb2YgdmlydHVhbGl6ZXJbcHJvcGVydHkgYXMga2V5b2YgVl0gPT09ICdmdW5jdGlvbidcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHVudHlwZWRUYXJnZXQsIHByb3BlcnR5LCB7XG4gICAgICAgICAgdmFsdWU6IGlzRnVuY3Rpb25cbiAgICAgICAgICAgID8gY29tcHV0ZWQoKCkgPT4gKHRhcmdldCgpW3Byb3BlcnR5IGFzIGtleW9mIFZdIGFzIEZ1bmN0aW9uKSgpKVxuICAgICAgICAgICAgOiBjb21wdXRlZCgoKSA9PiB0YXJnZXQoKVtwcm9wZXJ0eSBhcyBrZXlvZiBWXSksXG4gICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIENyZWF0ZSBwbGFpbiBzaWduYWxzIGZvciBmdW5jdGlvbnMgdGhhdCBhY2NlcHQgYXJndW1lbnRzIGFuZCByZXR1cm4gcmVhY3RpdmUgdmFsdWVzXG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgW1xuICAgICAgICAgICdnZXRPZmZzZXRGb3JBbGlnbm1lbnQnLFxuICAgICAgICAgICdnZXRPZmZzZXRGb3JJbmRleCcsXG4gICAgICAgICAgJ2dldFZpcnR1YWxJdGVtRm9yT2Zmc2V0JyxcbiAgICAgICAgICAnaW5kZXhGcm9tRWxlbWVudCcsXG4gICAgICAgIF0uaW5jbHVkZXMocHJvcGVydHkpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgZm4gPSB2aXJ0dWFsaXplcltwcm9wZXJ0eSBhcyBrZXlvZiBWXSBhcyBGdW5jdGlvblxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodW50eXBlZFRhcmdldCwgcHJvcGVydHksIHtcbiAgICAgICAgICB2YWx1ZTogdG9Db21wdXRlZCh2aXJ0dWFsaXplclNpZ25hbCwgZm4pLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW50eXBlZFRhcmdldFtwcm9wZXJ0eV0gfHwgdmlydHVhbGl6ZXJbcHJvcGVydHkgYXMga2V5b2YgVl1cbiAgICB9LFxuICAgIGhhcyhfLCBwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gISF1bnRyYWNrZWQodmlydHVhbGl6ZXJTaWduYWwpW3Byb3BlcnR5IGFzIGtleW9mIFZdXG4gICAgfSxcbiAgICBvd25LZXlzKCkge1xuICAgICAgcmV0dXJuIFJlZmxlY3Qub3duS2V5cyh1bnRyYWNrZWQodmlydHVhbGl6ZXJTaWduYWwpKVxuICAgIH0sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgfVxuICAgIH0sXG4gIH0pIGFzIHVua25vd24gYXMgQW5ndWxhclZpcnR1YWxpemVyPFMsIEk+XG59XG5cbmZ1bmN0aW9uIHRvQ29tcHV0ZWQ8ViBleHRlbmRzIFZpcnR1YWxpemVyPGFueSwgYW55Pj4oXG4gIHNpZ25hbDogU2lnbmFsPFY+LFxuICBmbjogRnVuY3Rpb24sXG4pIHtcbiAgY29uc3QgY29tcHV0ZWRDYWNoZTogUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+PiA9IHt9XG5cbiAgcmV0dXJuICguLi5hcmdzOiBBcnJheTxhbnk+KSA9PiB7XG4gICAgLy8gQ2FjaGUgY29tcHV0ZWRzIGJ5IHRoZWlyIGFyZ3VtZW50cyB0byBhdm9pZCByZS1jcmVhdGluZyB0aGUgY29tcHV0ZWQgb24gZWFjaCBjYWxsXG4gICAgY29uc3Qgc2VyaWFsaXplZEFyZ3MgPSBzZXJpYWxpemVBcmdzKC4uLmFyZ3MpXG4gICAgaWYgKGNvbXB1dGVkQ2FjaGUuaGFzT3duUHJvcGVydHkoc2VyaWFsaXplZEFyZ3MpKSB7XG4gICAgICByZXR1cm4gY29tcHV0ZWRDYWNoZVtzZXJpYWxpemVkQXJnc10/LigpXG4gICAgfVxuICAgIGNvbnN0IGNvbXB1dGVkU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgdm9pZCBzaWduYWwoKVxuICAgICAgcmV0dXJuIGZuKC4uLmFyZ3MpXG4gICAgfSlcblxuICAgIGNvbXB1dGVkQ2FjaGVbc2VyaWFsaXplZEFyZ3NdID0gY29tcHV0ZWRTaWduYWxcblxuICAgIHJldHVybiBjb21wdXRlZFNpZ25hbCgpXG4gIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplQXJncyguLi5hcmdzOiBBcnJheTxhbnk+KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzKVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { untracked, computed, signal, effect, afterNextRender,
|
|
1
|
+
import { untracked, computed, signal, effect, afterNextRender, inject, DestroyRef } from '@angular/core';
|
|
2
2
|
import { Virtualizer, elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect } from '@tanstack/virtual-core';
|
|
3
3
|
export * from '@tanstack/virtual-core';
|
|
4
4
|
|
|
@@ -124,9 +124,7 @@ function createVirtualizerBase(options) {
|
|
|
124
124
|
}
|
|
125
125
|
}, { allowSignalWrites: true });
|
|
126
126
|
let cleanup;
|
|
127
|
-
afterNextRender(() => (virtualizer ?? lazyInit())._didMount()
|
|
128
|
-
phase: AfterRenderPhase.Read,
|
|
129
|
-
});
|
|
127
|
+
afterNextRender({ read: () => (virtualizer ?? lazyInit())._didMount() });
|
|
130
128
|
inject(DestroyRef).onDestroy(() => cleanup?.());
|
|
131
129
|
return proxyVirtualizer(virtualizerSignal, lazyInit);
|
|
132
130
|
}
|
|
@@ -1 +1 @@
|
|
|
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 AfterRenderPhase,\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(() => (virtualizer ?? lazyInit())._didMount(), {\n phase: AfterRenderPhase.Read,\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
|
+
{"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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/angular-virtual",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Headless UI for virtualizing scrollable elements in Angular",
|
|
5
5
|
"author": "Garrett Darnell",
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,15 +41,15 @@
|
|
|
41
41
|
],
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"tslib": "^2.8.1",
|
|
44
|
-
"@tanstack/virtual-core": "3.13.
|
|
44
|
+
"@tanstack/virtual-core": "3.13.12"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@angular/core": "^
|
|
48
|
-
"ng-packagr": "^
|
|
49
|
-
"typescript": "5.
|
|
47
|
+
"@angular/core": "^18.1.0",
|
|
48
|
+
"ng-packagr": "^18.1.0",
|
|
49
|
+
"typescript": "5.4.5"
|
|
50
50
|
},
|
|
51
51
|
"peerDependencies": {
|
|
52
|
-
"@angular/core": ">=
|
|
52
|
+
"@angular/core": ">=18.1.0"
|
|
53
53
|
},
|
|
54
54
|
"sideEffects": false,
|
|
55
55
|
"scripts": {
|