@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
54 lines (46 loc) • 4.97 kB
JavaScript
;
var _reference = require("@glimmer/reference");
var _opcodes = require("../../opcodes");
var _vm = require("./vm");
_opcodes.APPEND_OPCODES.add(72
/* EnterList */
, (vm, {
op1: relativeStart,
op2: elseTarget
}) => {
let stack = vm.stack;
let listRef = stack.pop();
let keyRef = stack.pop();
let keyValue = (0, _reference.valueForRef)(keyRef);
let key = keyValue === null ? '@identity' : String(keyValue);
let iteratorRef = (0, _reference.createIteratorRef)(listRef, key);
let iterator = (0, _reference.valueForRef)(iteratorRef);
vm.updateWith(new _vm.AssertFilter(iteratorRef, iterator => iterator.isEmpty()));
if (iterator.isEmpty() === true) {
// TODO: Fix this offset, should be accurate
vm.goto(elseTarget + 1);
} else {
vm.enterList(iteratorRef, relativeStart);
vm.stack.push(iterator);
}
});
_opcodes.APPEND_OPCODES.add(73
/* ExitList */
, vm => {
vm.exitList();
});
_opcodes.APPEND_OPCODES.add(74
/* Iterate */
, (vm, {
op1: breaks
}) => {
let stack = vm.stack;
let iterator = stack.peek();
let item = iterator.next();
if (item !== null) {
vm.registerItem(vm.enterItem(item));
} else {
vm.goto(breaks);
}
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvbGlzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTs7QUFJQTs7QUFFQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBaUMsQ0FBQSxFQUFBLEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBTCxhQUFBO0FBQXNCLEVBQUEsR0FBRyxFQUFFO0FBQTNCLENBQUwsS0FBZ0Q7QUFDL0UsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFkLEtBQUE7QUFDQSxNQUFJLE9BQU8sR0FBUyxLQUFLLENBQXpCLEdBQW9CLEVBQXBCO0FBQ0EsTUFBSSxNQUFNLEdBQVMsS0FBSyxDQUF4QixHQUFtQixFQUFuQjtBQUVBLE1BQUksUUFBUSxHQUFHLDRCQUFmLE1BQWUsQ0FBZjtBQUNBLE1BQUksR0FBRyxHQUFHLFFBQVEsS0FBUixJQUFBLEdBQUEsV0FBQSxHQUFrQyxNQUFNLENBQWxELFFBQWtELENBQWxEO0FBRUEsTUFBSSxXQUFXLEdBQUcsa0NBQWlCLE9BQWpCLEVBQWxCLEdBQWtCLENBQWxCO0FBQ0EsTUFBSSxRQUFRLEdBQUcsNEJBQWYsV0FBZSxDQUFmO0FBRUEsRUFBQSxFQUFFLENBQUYsVUFBQSxDQUFjLElBQUEsZ0JBQUEsQ0FBQSxXQUFBLEVBQStCLFFBQUQsSUFBYyxRQUFRLENBQWxFLE9BQTBELEVBQTVDLENBQWQ7O0FBRUEsTUFBSSxRQUFRLENBQVIsT0FBQSxPQUFKLElBQUEsRUFBaUM7QUFDL0I7QUFDQSxJQUFBLEVBQUUsQ0FBRixJQUFBLENBQVEsVUFBVSxHQUFsQixDQUFBO0FBRkYsR0FBQSxNQUdPO0FBQ0wsSUFBQSxFQUFFLENBQUYsU0FBQSxDQUFBLFdBQUEsRUFBQSxhQUFBO0FBQ0EsSUFBQSxFQUFFLENBQUYsS0FBQSxDQUFBLElBQUEsQ0FBQSxRQUFBO0FBQ0Q7QUFuQkgsQ0FBQTs7QUFzQkEsd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQWlDLEVBQUQsSUFBTztBQUNyQyxFQUFBLEVBQUUsQ0FBRixRQUFBO0FBREYsQ0FBQTs7QUFJQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBK0IsQ0FBQSxFQUFBLEVBQUs7QUFBRSxFQUFBLEdBQUcsRUFBRTtBQUFQLENBQUwsS0FBd0I7QUFDckQsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFkLEtBQUE7QUFDQSxNQUFJLFFBQVEsR0FBUyxLQUFLLENBQTFCLElBQXFCLEVBQXJCO0FBQ0EsTUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFuQixJQUFXLEVBQVg7O0FBRUEsTUFBSSxJQUFJLEtBQVIsSUFBQSxFQUFtQjtBQUNqQixJQUFBLEVBQUUsQ0FBRixZQUFBLENBQWdCLEVBQUUsQ0FBRixTQUFBLENBQWhCLElBQWdCLENBQWhCO0FBREYsR0FBQSxNQUVPO0FBQ0wsSUFBQSxFQUFFLENBQUYsSUFBQSxDQUFBLE1BQUE7QUFDRDtBQVRILENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVJdGVyYXRvclJlZiwgdmFsdWVGb3JSZWYgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IENoZWNrUmVmZXJlbmNlLCBDaGVja0l0ZXJhdG9yIH0gZnJvbSAnLi8tZGVidWctc3RyaXAnO1xuaW1wb3J0IHsgY2hlY2sgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQgeyBPcCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXNzZXJ0RmlsdGVyIH0gZnJvbSAnLi92bSc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5FbnRlckxpc3QsICh2bSwgeyBvcDE6IHJlbGF0aXZlU3RhcnQsIG9wMjogZWxzZVRhcmdldCB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgbGlzdFJlZiA9IGNoZWNrKHN0YWNrLnBvcCgpLCBDaGVja1JlZmVyZW5jZSk7XG4gIGxldCBrZXlSZWYgPSBjaGVjayhzdGFjay5wb3AoKSwgQ2hlY2tSZWZlcmVuY2UpO1xuXG4gIGxldCBrZXlWYWx1ZSA9IHZhbHVlRm9yUmVmKGtleVJlZik7XG4gIGxldCBrZXkgPSBrZXlWYWx1ZSA9PT0gbnVsbCA/ICdAaWRlbnRpdHknIDogU3RyaW5nKGtleVZhbHVlKTtcblxuICBsZXQgaXRlcmF0b3JSZWYgPSBjcmVhdGVJdGVyYXRvclJlZihsaXN0UmVmLCBrZXkpO1xuICBsZXQgaXRlcmF0b3IgPSB2YWx1ZUZvclJlZihpdGVyYXRvclJlZik7XG5cbiAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0RmlsdGVyKGl0ZXJhdG9yUmVmLCAoaXRlcmF0b3IpID0+IGl0ZXJhdG9yLmlzRW1wdHkoKSkpO1xuXG4gIGlmIChpdGVyYXRvci5pc0VtcHR5KCkgPT09IHRydWUpIHtcbiAgICAvLyBUT0RPOiBGaXggdGhpcyBvZmZzZXQsIHNob3VsZCBiZSBhY2N1cmF0ZVxuICAgIHZtLmdvdG8oZWxzZVRhcmdldCArIDEpO1xuICB9IGVsc2Uge1xuICAgIHZtLmVudGVyTGlzdChpdGVyYXRvclJlZiwgcmVsYXRpdmVTdGFydCk7XG4gICAgdm0uc3RhY2sucHVzaChpdGVyYXRvcik7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRXhpdExpc3QsICh2bSkgPT4ge1xuICB2bS5leGl0TGlzdCgpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5JdGVyYXRlLCAodm0sIHsgb3AxOiBicmVha3MgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGl0ZXJhdG9yID0gY2hlY2soc3RhY2sucGVlaygpLCBDaGVja0l0ZXJhdG9yKTtcbiAgbGV0IGl0ZW0gPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgaWYgKGl0ZW0gIT09IG51bGwpIHtcbiAgICB2bS5yZWdpc3Rlckl0ZW0odm0uZW50ZXJJdGVtKGl0ZW0pKTtcbiAgfSBlbHNlIHtcbiAgICB2bS5nb3RvKGJyZWFrcyk7XG4gIH1cbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==