UNPKG

@tanstack/angular-virtual

Version:

Headless UI for virtualizing scrollable elements in Angular

51 lines (50 loc) 1.49 kB
import { untracked, computed } from "@angular/core"; function signalProxy(inputSignal, methodsToPassThrough, attributesToTransformToSignals, methodsToTrack, methodsToTransformToSignals) { const callableTarget = (() => inputSignal()); return new Proxy(callableTarget, { apply() { return inputSignal(); }, get(target, property) { const fieldValue = target[property]; if (fieldValue !== void 0) return fieldValue; if (methodsToPassThrough.includes(property)) { return target[property] = (...args) => untracked(inputSignal)[property](...args); } if (methodsToTransformToSignals.includes( property )) { return target[property] = computed( () => inputSignal()[property]() ); } if (methodsToTrack.includes(property)) { return target[property] = (...args) => inputSignal()[property](...args); } if (attributesToTransformToSignals.includes( property )) { return target[property] = computed( () => inputSignal()[property] ); } return untracked(inputSignal)[property]; }, has(_, property) { return property in untracked(inputSignal); }, ownKeys() { return Reflect.ownKeys(untracked(inputSignal)); }, getOwnPropertyDescriptor() { return { enumerable: true, configurable: true }; } }); } export { signalProxy }; //# sourceMappingURL=proxy.js.map