r-ninja
Version:
r-ninja watches for changes in JSX expressions and updates UI with very less glue code.
30 lines (29 loc) • 883 B
JavaScript
import { Watcher } from "./watcher";
export const internals = {
ROOT: Watcher.ROOT,
models: [],
expressions: (watcher = Watcher.ROOT) => {
var _a;
if (!watcher.isActive) {
return [];
}
return [
...(watcher.expressions || []),
...(((_a = watcher.children) === null || _a === void 0 ? void 0 : _a.map(w => internals.expressions(w)).flat()) || [])
];
},
getExpression: (expression) => {
expression = expression.toLowerCase();
return internals.expressions().filter(w => {
const expr = w.fn.toString().substring(6);
if (expr.toLowerCase().indexOf(expression) >= 0) {
return w;
}
}).map((w) => {
return {
expression: w.fn,
value: w.last
};
});
}
};