@tanstack/angular-virtual 3.13.12 → 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.
@@ -1,4 +1,4 @@
1
- import { AfterRenderPhase, DestroyRef, afterNextRender, computed, effect, inject, signal, untracked, } from '@angular/core';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsZUFBZSxFQUNmLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLFlBQVksR0FDYixNQUFNLHdCQUF3QixDQUFBO0FBQy9CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUsxQyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsU0FBUyxDQUFBO0FBRXZCLFNBQVMscUJBQXFCLENBSTVCLE9BQWlFO0lBRWpFLElBQUksV0FBc0QsQ0FBQTtJQUMxRCxTQUFTLFFBQVE7UUFDZixXQUFXLEtBQUssSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUMxQyxPQUFPLFdBQVcsQ0FBQTtJQUNwQixDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsV0FBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7SUFFdEUsdUJBQXVCO0lBQ3ZCLE1BQU0sQ0FDSixHQUFHLEVBQUU7UUFDSCxNQUFNLFFBQVEsR0FBRyxPQUFPLEVBQUUsQ0FBQTtRQUMxQixRQUFRLEVBQUUsQ0FBQTtRQUNWLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNsQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3JCLEdBQUcsUUFBUTtZQUNYLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRTtnQkFDM0Isa0VBQWtFO2dC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LENBQUE7QUFDckUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyUmVuZGVyUGhhc2UsXG4gIERlc3Ryb3lSZWYsXG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIHVudHJhY2tlZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIFZpcnR1YWxpemVyLFxuICBlbGVtZW50U2Nyb2xsLFxuICBvYnNlcnZlRWxlbWVudE9mZnNldCxcbiAgb2JzZXJ2ZUVsZW1lbnRSZWN0LFxuICBvYnNlcnZlV2luZG93T2Zmc2V0LFxuICBvYnNlcnZlV2luZG93UmVjdCxcbiAgd2luZG93U2Nyb2xsLFxufSBmcm9tICdAdGFuc3RhY2svdmlydHVhbC1jb3JlJ1xuaW1wb3J0IHsgcHJveHlWaXJ0dWFsaXplciB9IGZyb20gJy4vcHJveHknXG5pbXBvcnQgdHlwZSB7IEVsZW1lbnRSZWYsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgdHlwZSB7IFBhcnRpYWxLZXlzLCBWaXJ0dWFsaXplck9wdGlvbnMgfSBmcm9tICdAdGFuc3RhY2svdmlydHVhbC1jb3JlJ1xuaW1wb3J0IHR5cGUgeyBBbmd1bGFyVmlydHVhbGl6ZXIgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgKiBmcm9tICdAdGFuc3RhY2svdmlydHVhbC1jb3JlJ1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcydcblxuZnVuY3Rpb24gY3JlYXRlVmlydHVhbGl6ZXJCYXNlPFxuICBUU2Nyb2xsRWxlbWVudCBleHRlbmRzIEVsZW1lbnQgfCBXaW5kb3csXG4gIFRJdGVtRWxlbWVudCBleHRlbmRzIEVsZW1lbnQsXG4+KFxuICBvcHRpb25zOiBTaWduYWw8VmlydHVhbGl6ZXJPcHRpb25zPFRTY3JvbGxFbGVtZW50LCBUSXRlbUVsZW1lbnQ+Pixcbik6IEFuZ3VsYXJWaXJ0dWFsaXplcjxUU2Nyb2xsRWxlbWVudCwgVEl0ZW1FbGVtZW50PiB7XG4gIGxldCB2aXJ0dWFsaXplcjogVmlydHVhbGl6ZXI8VFNjcm9sbEVsZW1lbnQsIFRJdGVtRWxlbWVudD5cbiAgZnVuY3Rpb24gbGF6eUluaXQoKSB7XG4gICAgdmlydHVhbGl6ZXIgPz89IG5ldyBWaXJ0dWFsaXplcihvcHRpb25zKCkpXG4gICAgcmV0dXJuIHZpcnR1YWxpemVyXG4gIH1cblxuICBjb25zdCB2aXJ0dWFsaXplclNpZ25hbCA9IHNpZ25hbCh2aXJ0dWFsaXplciEsIHsgZXF1YWw6ICgpID0+IGZhbHNlIH0pXG5cbiAgLy8gdHdvLXdheSBzeW5jIG9wdGlvbnNcbiAgZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IF9vcHRpb25zID0gb3B0aW9ucygpXG4gICAgICBsYXp5SW5pdCgpXG4gICAgICB2aXJ0dWFsaXplclNpZ25hbC5zZXQodmlydHVhbGl6ZXIpXG4gICAgICB2aXJ0dWFsaXplci5zZXRPcHRpb25zKHtcbiAgICAgICAgLi4uX29wdGlvbnMsXG4gICAgICAgIG9uQ2hhbmdlOiAoaW5zdGFuY2UsIHN5bmMpID0+IHtcbiAgICAgICAgICAvLyB1cGRhdGUgdmlydHVhbGl6ZXJTaWduYWwgc28gdGhhdCBkZXBlbmRlbnQgY29tcHV0ZWRzIHJlY29tcHV0ZS5cbiAgICAgICAgICB2aXJ0dWFsaXplclNpZ25hbC5zZXQoaW5zdGFuY2UpXG4gICAgICAgICAgX29wdGlvbnMub25DaGFuZ2U/LihpbnN0YW5jZSwgc3luYylcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAvLyB1cGRhdGUgdmlydHVhbGl6ZXJTaWduYWwgc28gdGhhdCBkZXBlbmRlbnQgY29tcHV0ZWRzIHJlY29tcHV0ZS5cbiAgICAgIHZpcnR1YWxpemVyU2lnbmFsLnNldCh2aXJ0dWFsaXplcilcbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKVxuXG4gIGNvbnN0IHNjcm9sbEVsZW1lbnQgPSBjb21wdXRlZCgoKSA9PiBvcHRpb25zKCkuZ2V0U2Nyb2xsRWxlbWVudCgpKVxuICAvLyBsZXQgdGhlIHZpcnR1YWxpemVyIGtub3cgd2hlbiB0aGUgc2Nyb2xsIGVsZW1lbnQgaXMgY2hhbmdlZFxuICBlZmZlY3QoXG4gICAgKCkgPT4ge1xuICAgICAgY29uc3QgZWwgPSBzY3JvbGxFbGVtZW50KClcbiAgICAgIGlmIChlbCkge1xuICAgICAgICB1bnRyYWNrZWQodmlydHVhbGl6ZXJTaWduYWwpLl93aWxsVXBkYXRlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKVxuXG4gIGxldCBjbGVhbnVwOiAoKSA9PiB2b2lkIHwgdW5kZWZpbmVkXG4gIGFmdGVyTmV4dFJlbmRlcigoKSA9PiAodmlydHVhbGl6ZXIgPz8gbGF6eUluaXQoKSkuX2RpZE1vdW50KCksIHtcbiAgICBwaGFzZTogQWZ0ZXJSZW5kZXJQaGFzZS5SZWFkLFxuICB9KVxuXG4gIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4gY2xlYW51cD8uKCkpXG5cbiAgcmV0dXJuIHByb3h5VmlydHVhbGl6ZXIodmlydHVhbGl6ZXJTaWduYWwsIGxhenlJbml0KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VmlydHVhbGl6ZXI8XG4gIFRTY3JvbGxFbGVtZW50IGV4dGVuZHMgRWxlbWVudCxcbiAgVEl0ZW1FbGVtZW50IGV4dGVuZHMgRWxlbWVudCxcbj4oXG4gIG9wdGlvbnM6ICgpID0+IFBhcnRpYWxLZXlzPFxuICAgIE9taXQ8VmlydHVhbGl6ZXJPcHRpb25zPFRTY3JvbGxFbGVtZW50LCBUSXRlbUVsZW1lbnQ+LCAnZ2V0U2Nyb2xsRWxlbWVudCc+LFxuICAgICdvYnNlcnZlRWxlbWVudFJlY3QnIHwgJ29ic2VydmVFbGVtZW50T2Zmc2V0JyB8ICdzY3JvbGxUb0ZuJ1xuICA+ICYge1xuICAgIHNjcm9sbEVsZW1lbnQ6IEVsZW1lbnRSZWY8VFNjcm9sbEVsZW1lbnQ+IHwgVFNjcm9sbEVsZW1lbnQgfCB1bmRlZmluZWRcbiAgfSxcbik6IEFuZ3VsYXJWaXJ0dWFsaXplcjxUU2Nyb2xsRWxlbWVudCwgVEl0ZW1FbGVtZW50PiB7XG4gIGNvbnN0IHJlc29sdmVkT3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgb2JzZXJ2ZUVsZW1lbnRSZWN0OiBvYnNlcnZlRWxlbWVudFJlY3QsXG4gICAgICBvYnNlcnZlRWxlbWVudE9mZnNldDogb2JzZXJ2ZUVsZW1lbnRPZmZzZXQsXG4gICAgICBzY3JvbGxUb0ZuOiBlbGVtZW50U2Nyb2xsLFxuICAgICAgZ2V0U2Nyb2xsRWxlbWVudDogKCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50T3JSZWYgPSBvcHRpb25zKCkuc2Nyb2xsRWxlbWVudFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChpc0VsZW1lbnRSZWYoZWxlbWVudE9yUmVmKVxuICAgICAgICAgICAgPyBlbGVtZW50T3JSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgOiBlbGVtZW50T3JSZWYpID8/IG51bGxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIC4uLm9wdGlvbnMoKSxcbiAgICB9XG4gIH0pXG4gIHJldHVybiBjcmVhdGVWaXJ0dWFsaXplckJhc2U8VFNjcm9sbEVsZW1lbnQsIFRJdGVtRWxlbWVudD4ocmVzb2x2ZWRPcHRpb25zKVxufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRSZWY8VCBleHRlbmRzIEVsZW1lbnQ+KFxuICBlbGVtZW50T3JSZWY6IEVsZW1lbnRSZWY8VD4gfCBUIHwgdW5kZWZpbmVkLFxuKTogZWxlbWVudE9yUmVmIGlzIEVsZW1lbnRSZWY8VD4ge1xuICByZXR1cm4gZWxlbWVudE9yUmVmICE9IG51bGwgJiYgJ25hdGl2ZUVsZW1lbnQnIGluIGVsZW1lbnRPclJlZlxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0V2luZG93VmlydHVhbGl6ZXI8VEl0ZW1FbGVtZW50IGV4dGVuZHMgRWxlbWVudD4oXG4gIG9wdGlvbnM6ICgpID0+IFBhcnRpYWxLZXlzPFxuICAgIFZpcnR1YWxpemVyT3B0aW9uczxXaW5kb3csIFRJdGVtRWxlbWVudD4sXG4gICAgfCAnZ2V0U2Nyb2xsRWxlbWVudCdcbiAgICB8ICdvYnNlcnZlRWxlbWVudFJlY3QnXG4gICAgfCAnb2JzZXJ2ZUVsZW1lbnRPZmZzZXQnXG4gICAgfCAnc2Nyb2xsVG9GbidcbiAgPixcbik6IEFuZ3VsYXJWaXJ0dWFsaXplcjxXaW5kb3csIFRJdGVtRWxlbWVudD4ge1xuICBjb25zdCByZXNvbHZlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFNjcm9sbEVsZW1lbnQ6ICgpID0+ICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDogbnVsbCksXG4gICAgICBvYnNlcnZlRWxlbWVudFJlY3Q6IG9ic2VydmVXaW5kb3dSZWN0LFxuICAgICAgb2JzZXJ2ZUVsZW1lbnRPZmZzZXQ6IG9ic2VydmVXaW5kb3dPZmZzZXQsXG4gICAgICBzY3JvbGxUb0ZuOiB3aW5kb3dTY3JvbGwsXG4gICAgICBpbml0aWFsT2Zmc2V0OiAoKSA9PlxuICAgICAgICB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnNjcm9sbFkgOiAwLFxuICAgICAgLi4ub3B0aW9ucygpLFxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGNyZWF0ZVZpcnR1YWxpemVyQmFzZTxXaW5kb3csIFRJdGVtRWxlbWVudD4ocmVzb2x2ZWRPcHRpb25zKVxufVxuIl19
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==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJveHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFLbkQsTUFBTSxVQUFVLGdCQUFnQixDQUs5QixpQkFBb0MsRUFDcEMsUUFBaUI7SUFFakIsT0FBTyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtRQUNsQyxLQUFLO1lBQ0gsT0FBTyxpQkFBaUIsRUFBRSxDQUFBO1FBQzVCLENBQUM7UUFDRCxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVE7WUFDbEIsTUFBTSxhQUFhLEdBQUcsTUFBYSxDQUFBO1lBQ25DLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMzQixPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTthQUMvQjtZQUNELElBQUksV0FBVyxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1lBQzlDLElBQUksV0FBVyxJQUFJLElBQUksRUFBRTtnQkFDdkIsV0FBVyxHQUFHLFFBQVEsRUFBRSxDQUFBO2dCQUN4QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7YUFDcEQ7WUFFRCw2RUFBNkU7WUFDN0UsSUFDRSxPQUFPLFFBQVEsS0FBSyxRQUFRO2dCQUM1QjtvQkFDRSxjQUFjO29CQUNkLGlCQUFpQjtvQkFDakIsYUFBYTtvQkFDYixTQUFTO29CQUNULE9BQU87b0JBQ1AsaUJBQWlCO29CQUNqQixlQUFlO29CQUNmLGNBQWM7b0JBQ2QsWUFBWTtvQkFDWixxQkFBcUI7b0JBQ3JCLG1CQUFtQjtpQkFDcEIsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQ3BCO2dCQUNBLE1BQU0sVUFBVSxHQUNkLE9BQU8sV0FBVyxDQUFDLFFBQW1CLENBQUMsS0FBSyxVQUFVLENBQUE7Z0JBQ3hELE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRTtvQkFDN0MsS0FBSyxFQUFFLFVBQVU7d0JBQ2YsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBRSxNQUFNLEVBQUUsQ0FBQyxRQUFtQixDQUFjLEVBQUUsQ0FBQzt3QkFDL0QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFtQixDQUFDLENBQUM7b0JBQ2pELFlBQVksRUFBRSxJQUFJO29CQUNsQixVQUFVLEVBQUUsSUFBSTtpQkFDakIsQ0FBQyxDQUFBO2FBQ0g7WUFFRCxzRkFBc0Y7WUFDdEYsSUFDRSxPQUFPLFFBQVEsS0FBSyxRQUFRO2dCQUM1QjtvQkFDRSx1QkFBdUI7b0JBQ3ZCLG1CQUFtQjtvQkFDbkIseUJBQXlCO29CQUN6QixrQkFBa0I7aUJBQ25CLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUNwQjtnQkFDQSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsUUFBbUIsQ0FBYSxDQUFBO2dCQUN2RCxNQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUU7b0JBQzdDLEtBQUssRUFBRSxVQUFVLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO29CQUN4QyxZQUFZLEVBQUUsSUFBSTtvQkFDbEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCLENBQUMsQ0FBQTthQUNIO1lBRUQsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLFFBQW1CLENBQUMsQ0FBQTtRQUNwRSxDQUFDO1FBQ0QsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFnQjtZQUNyQixPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFtQixDQUFDLENBQUE7UUFDNUQsQ0FBQztRQUNELE9BQU87WUFDTCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQTtRQUN0RCxDQUFDO1FBQ0Qsd0JBQXdCO1lBQ3RCLE9BQU87Z0JBQ0wsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFlBQVksRUFBRSxJQUFJO2FBQ25CLENBQUE7UUFDSCxDQUFDO0tBQ0YsQ0FBd0MsQ0FBQTtBQUMzQyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQ2pCLE1BQWlCLEVBQ2pCLEVBQVk7SUFFWixNQUFNLGFBQWEsR0FBb0MsRUFBRSxDQUFBO0lBRXpELE9BQU8sQ0FBQyxHQUFHLElBQWdCLEVBQUUsRUFBRTtRQUM3QixvRkFBb0Y7UUFDcEYsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDN0MsSUFBSSxhQUFhLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ2hELE9BQU8sYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FBQTtTQUN6QztRQUNELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsS0FBSyxNQUFNLEVBQUUsQ0FBQTtZQUNiLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDcEIsQ0FBQyxDQUFDLENBQUE7UUFFRixhQUFhLENBQUMsY0FBYyxDQUFDLEdBQUcsY0FBYyxDQUFBO1FBRTlDLE9BQU8sY0FBYyxFQUFFLENBQUE7SUFDekIsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEdBQUcsSUFBZ0I7SUFDeEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB0eXBlIHsgU2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgdHlwZSB7IFZpcnR1YWxpemVyIH0gZnJvbSAnQHRhbnN0YWNrL3ZpcnR1YWwtY29yZSdcbmltcG9ydCB0eXBlIHsgQW5ndWxhclZpcnR1YWxpemVyIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3h5VmlydHVhbGl6ZXI8XG4gIFYgZXh0ZW5kcyBWaXJ0dWFsaXplcjxhbnksIGFueT4sXG4gIFMgZXh0ZW5kcyBFbGVtZW50IHwgV2luZG93ID0gViBleHRlbmRzIFZpcnR1YWxpemVyPGluZmVyIFUsIGFueT4gPyBVIDogbmV2ZXIsXG4gIEkgZXh0ZW5kcyBFbGVtZW50ID0gViBleHRlbmRzIFZpcnR1YWxpemVyPGFueSwgaW5mZXIgVT4gPyBVIDogbmV2ZXIsXG4+KFxuICB2aXJ0dWFsaXplclNpZ25hbDogV3JpdGFibGVTaWduYWw8Vj4sXG4gIGxhenlJbml0OiAoKSA9PiBWLFxuKTogQW5ndWxhclZpcnR1YWxpemVyPFMsIEk+IHtcbiAgcmV0dXJuIG5ldyBQcm94eSh2aXJ0dWFsaXplclNpZ25hbCwge1xuICAgIGFwcGx5KCkge1xuICAgICAgcmV0dXJuIHZpcnR1YWxpemVyU2lnbmFsKClcbiAgICB9LFxuICAgIGdldCh0YXJnZXQsIHByb3BlcnR5KSB7XG4gICAgICBjb25zdCB1bnR5cGVkVGFyZ2V0ID0gdGFyZ2V0IGFzIGFueVxuICAgICAgaWYgKHVudHlwZWRUYXJnZXRbcHJvcGVydHldKSB7XG4gICAgICAgIHJldHVybiB1bnR5cGVkVGFyZ2V0W3Byb3BlcnR5XVxuICAgICAgfVxuICAgICAgbGV0IHZpcnR1YWxpemVyID0gdW50cmFja2VkKHZpcnR1YWxpemVyU2lnbmFsKVxuICAgICAgaWYgKHZpcnR1YWxpemVyID09IG51bGwpIHtcbiAgICAgICAgdmlydHVhbGl6ZXIgPSBsYXp5SW5pdCgpXG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB2aXJ0dWFsaXplclNpZ25hbC5zZXQodmlydHVhbGl6ZXIpKVxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgY29tcHV0ZWQgc2lnbmFscyBmb3IgZWFjaCBwcm9wZXJ0eSB0aGF0IHJlcHJlc2VudHMgYSByZWFjdGl2ZSB2YWx1ZVxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgcHJvcGVydHkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIFtcbiAgICAgICAgICAnZ2V0VG90YWxTaXplJyxcbiAgICAgICAgICAnZ2V0VmlydHVhbEl0ZW1zJyxcbiAgICAgICAgICAnaXNTY3JvbGxpbmcnLFxuICAgICAgICAgICdvcHRpb25zJyxcbiAgICAgICAgICAncmFuZ2UnLFxuICAgICAgICAgICdzY3JvbGxEaXJlY3Rpb24nLFxuICAgICAgICAgICdzY3JvbGxFbGVtZW50JyxcbiAgICAgICAgICAnc2Nyb2xsT2Zmc2V0JyxcbiAgICAgICAgICAnc2Nyb2xsUmVjdCcsXG4gICAgICAgICAgJ21lYXN1cmVFbGVtZW50Q2FjaGUnLFxuICAgICAgICAgICdtZWFzdXJlbWVudHNDYWNoZScsXG4gICAgICAgIF0uaW5jbHVkZXMocHJvcGVydHkpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgaXNGdW5jdGlvbiA9XG4gICAgICAgICAgdHlwZW9mIHZpcnR1YWxpemVyW3Byb3BlcnR5IGFzIGtleW9mIFZdID09PSAnZnVuY3Rpb24nXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1bnR5cGVkVGFyZ2V0LCBwcm9wZXJ0eSwge1xuICAgICAgICAgIHZhbHVlOiBpc0Z1bmN0aW9uXG4gICAgICAgICAgICA/IGNvbXB1dGVkKCgpID0+ICh0YXJnZXQoKVtwcm9wZXJ0eSBhcyBrZXlvZiBWXSBhcyBGdW5jdGlvbikoKSlcbiAgICAgICAgICAgIDogY29tcHV0ZWQoKCkgPT4gdGFyZ2V0KClbcHJvcGVydHkgYXMga2V5b2YgVl0pLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgcGxhaW4gc2lnbmFscyBmb3IgZnVuY3Rpb25zIHRoYXQgYWNjZXB0IGFyZ3VtZW50cyBhbmQgcmV0dXJuIHJlYWN0aXZlIHZhbHVlc1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgcHJvcGVydHkgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIFtcbiAgICAgICAgICAnZ2V0T2Zmc2V0Rm9yQWxpZ25tZW50JyxcbiAgICAgICAgICAnZ2V0T2Zmc2V0Rm9ySW5kZXgnLFxuICAgICAgICAgICdnZXRWaXJ0dWFsSXRlbUZvck9mZnNldCcsXG4gICAgICAgICAgJ2luZGV4RnJvbUVsZW1lbnQnLFxuICAgICAgICBdLmluY2x1ZGVzKHByb3BlcnR5KVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGZuID0gdmlydHVhbGl6ZXJbcHJvcGVydHkgYXMga2V5b2YgVl0gYXMgRnVuY3Rpb25cbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHVudHlwZWRUYXJnZXQsIHByb3BlcnR5LCB7XG4gICAgICAgICAgdmFsdWU6IHRvQ29tcHV0ZWQodmlydHVhbGl6ZXJTaWduYWwsIGZuKSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVudHlwZWRUYXJnZXRbcHJvcGVydHldIHx8IHZpcnR1YWxpemVyW3Byb3BlcnR5IGFzIGtleW9mIFZdXG4gICAgfSxcbiAgICBoYXMoXywgcHJvcGVydHk6IHN0cmluZykge1xuICAgICAgcmV0dXJuICEhdW50cmFja2VkKHZpcnR1YWxpemVyU2lnbmFsKVtwcm9wZXJ0eSBhcyBrZXlvZiBWXVxuICAgIH0sXG4gICAgb3duS2V5cygpIHtcbiAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModW50cmFja2VkKHZpcnR1YWxpemVyU2lnbmFsKSlcbiAgICB9LFxuICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIH1cbiAgICB9LFxuICB9KSBhcyB1bmtub3duIGFzIEFuZ3VsYXJWaXJ0dWFsaXplcjxTLCBJPlxufVxuXG5mdW5jdGlvbiB0b0NvbXB1dGVkPFYgZXh0ZW5kcyBWaXJ0dWFsaXplcjxhbnksIGFueT4+KFxuICBzaWduYWw6IFNpZ25hbDxWPixcbiAgZm46IEZ1bmN0aW9uLFxuKSB7XG4gIGNvbnN0IGNvbXB1dGVkQ2FjaGU6IFJlY29yZDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj4gPSB7fVxuXG4gIHJldHVybiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4ge1xuICAgIC8vIENhY2hlIGNvbXB1dGVkcyBieSB0aGVpciBhcmd1bWVudHMgdG8gYXZvaWQgcmUtY3JlYXRpbmcgdGhlIGNvbXB1dGVkIG9uIGVhY2ggY2FsbFxuICAgIGNvbnN0IHNlcmlhbGl6ZWRBcmdzID0gc2VyaWFsaXplQXJncyguLi5hcmdzKVxuICAgIGlmIChjb21wdXRlZENhY2hlLmhhc093blByb3BlcnR5KHNlcmlhbGl6ZWRBcmdzKSkge1xuICAgICAgcmV0dXJuIGNvbXB1dGVkQ2FjaGVbc2VyaWFsaXplZEFyZ3NdPy4oKVxuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZFNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHZvaWQgc2lnbmFsKClcbiAgICAgIHJldHVybiBmbiguLi5hcmdzKVxuICAgIH0pXG5cbiAgICBjb21wdXRlZENhY2hlW3NlcmlhbGl6ZWRBcmdzXSA9IGNvbXB1dGVkU2lnbmFsXG5cbiAgICByZXR1cm4gY29tcHV0ZWRTaWduYWwoKVxuICB9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUFyZ3MoLi4uYXJnczogQXJyYXk8YW55Pikge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJncylcbn1cbiJdfQ==
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, AfterRenderPhase, inject, DestroyRef } from '@angular/core';
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.13.12",
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",
@@ -44,12 +44,12 @@
44
44
  "@tanstack/virtual-core": "3.13.12"
45
45
  },
46
46
  "devDependencies": {
47
- "@angular/core": "^17.3.12",
48
- "ng-packagr": "^17.3.0",
49
- "typescript": "5.2.2"
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": ">=17"
52
+ "@angular/core": ">=18.1.0"
53
53
  },
54
54
  "sideEffects": false,
55
55
  "scripts": {