ember-source
Version:
A JavaScript framework for creating ambitious web applications
34 lines (31 loc) • 1.09 kB
JavaScript
import '../../../debug/index.js';
import { isPath, trackLocals } from './utils.js';
import { isDevelopingApp } from '@embroider/macros';
import { assert } from '../../../debug/lib/assert.js';
function transformEachTrackArray(env) {
let {
builders: b
} = env.syntax;
let {
hasLocal,
visitor
} = trackLocals(env);
return {
name: 'transform-each-track-array',
visitor: {
...visitor,
BlockStatement(node) {
if (isPath(node.path) && node.path.original === 'each' && !hasLocal('each')) {
let firstParam = node.params[0];
(isDevelopingApp() && !(firstParam) && assert('has firstParam', firstParam));
if (firstParam.type === 'SubExpression' && firstParam.path.type === 'PathExpression' && firstParam.path.original === '-each-in') {
return;
}
node.params[0] = b.sexpr(b.path('-track-array'), [firstParam]);
return b.block(b.path('each'), node.params, node.hash, node.program, node.inverse, node.loc);
}
}
}
};
}
export { transformEachTrackArray as default };