vasille-jsx
Version:
The same framework which is designed to build bulletproof frontends (JSX components)
34 lines (33 loc) • 1.41 kB
JavaScript
import { DevArrayModel, DevExpression, DevIValue, DevMapModel, DevReference, DevSetModel, } from "vasille/dev";
import { match, set } from "../internal.js";
export function devExpr(ctx, func, values, depsCode, declaration, inspector) {
return new DevExpression(func, values, ctx, depsCode, declaration, inspector, false);
}
export function devRef(v, declaration, inspector) {
return new DevReference(v, declaration, inspector);
}
export function devSetModel(inspector, usage, ctx, data) {
return new DevSetModel(inspector, usage, data, ctx);
}
export function devMapModel(inspector, usage, ctx, data) {
return new DevMapModel(inspector, usage, data, ctx);
}
export function devArrayModel(inspector, usage, ctx, data) {
return new DevArrayModel(inspector, usage, data, ctx);
}
export function devEnsure(obj, key, declaration, inspector) {
if (!obj) {
return undefined;
}
return key in obj ? obj[key] : (obj[key] = devRef(undefined, declaration, inspector));
}
export function devMatch(name, data, declaration, inspector) {
return match(name, data, v => devRef(v, declaration, inspector));
}
export function devSet(o, key, value, declaration, inspector, executionPosition) {
if (o[key] instanceof DevIValue) {
o[key].update(value, executionPosition);
return value;
}
return set(o, key, value, v => devRef(v, declaration, inspector));
}