@tanstack/angular-virtual
Version:
Headless UI for virtualizing scrollable elements in Angular
51 lines (50 loc) • 1.49 kB
JavaScript
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