@tanstack/angular-virtual
Version:
Headless UI for virtualizing scrollable elements in Angular
51 lines (50 loc) • 1.6 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const core = require("@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) => core.untracked(inputSignal)[property](...args);
}
if (methodsToTransformToSignals.includes(
property
)) {
return target[property] = core.computed(
() => inputSignal()[property]()
);
}
if (methodsToTrack.includes(property)) {
return target[property] = (...args) => inputSignal()[property](...args);
}
if (attributesToTransformToSignals.includes(
property
)) {
return target[property] = core.computed(
() => inputSignal()[property]
);
}
return core.untracked(inputSignal)[property];
},
has(_, property) {
return property in core.untracked(inputSignal);
},
ownKeys() {
return Reflect.ownKeys(core.untracked(inputSignal));
},
getOwnPropertyDescriptor() {
return {
enumerable: true,
configurable: true
};
}
});
}
exports.signalProxy = signalProxy;
//# sourceMappingURL=proxy.cjs.map