@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
54 lines (46 loc) • 5.16 kB
JavaScript
;
var _reference = require("@glimmer/reference");
var _opcodes = require("../../opcodes");
var _vm = require("./vm");
_opcodes.APPEND_OPCODES.add(72
/* EnterList */
, function (vm, _ref) {
var relativeStart = _ref.op1,
elseTarget = _ref.op2;
var stack = vm.stack;
var listRef = stack.pop();
var keyRef = stack.pop();
var keyValue = (0, _reference.valueForRef)(keyRef);
var key = keyValue === null ? '@identity' : String(keyValue);
var iteratorRef = (0, _reference.createIteratorRef)(listRef, key);
var iterator = (0, _reference.valueForRef)(iteratorRef);
vm.updateWith(new _vm.AssertFilter(iteratorRef, function (iterator) {
return 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 */
, function (vm) {
vm.exitList();
});
_opcodes.APPEND_OPCODES.add(74
/* Iterate */
, function (vm, _ref2) {
var breaks = _ref2.op1;
var stack = vm.stack;
var iterator = stack.peek();
var item = iterator.next();
if (item !== null) {
vm.registerItem(vm.enterItem(item));
} else {
vm["goto"](breaks);
}
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvbGlzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTs7QUFJQTs7QUFFQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBaUMsVUFBQSxFQUFBLEVBQUEsSUFBQSxFQUFnRDtBQUFBLE1BQTNDLGFBQTJDLEdBQUEsSUFBQSxDQUF6QyxHQUF5QztBQUFBLE1BQWhCLFVBQWdCLEdBQUEsSUFBQSxDQUFyQixHQUFxQjtBQUMvRSxNQUFJLEtBQUssR0FBRyxFQUFFLENBQWQsS0FBQTtBQUNBLE1BQUksT0FBTyxHQUFTLEtBQUssQ0FBekIsR0FBb0IsRUFBcEI7QUFDQSxNQUFJLE1BQU0sR0FBUyxLQUFLLENBQXhCLEdBQW1CLEVBQW5CO0FBRUEsTUFBSSxRQUFRLEdBQUcsNEJBQWYsTUFBZSxDQUFmO0FBQ0EsTUFBSSxHQUFHLEdBQUcsUUFBUSxLQUFSLElBQUEsR0FBQSxXQUFBLEdBQWtDLE1BQU0sQ0FBbEQsUUFBa0QsQ0FBbEQ7QUFFQSxNQUFJLFdBQVcsR0FBRyxrQ0FBaUIsT0FBakIsRUFBbEIsR0FBa0IsQ0FBbEI7QUFDQSxNQUFJLFFBQVEsR0FBRyw0QkFBZixXQUFlLENBQWY7QUFFQSxFQUFBLEVBQUUsQ0FBRixVQUFBLENBQWMsSUFBQSxnQkFBQSxDQUFBLFdBQUEsRUFBK0IsVUFBRCxRQUFDLEVBQUQ7QUFBQSxXQUFjLFFBQVEsQ0FBbEUsT0FBMEQsRUFBZDtBQUE1QyxHQUFjLENBQWQ7O0FBRUEsTUFBSSxRQUFRLENBQVIsT0FBQSxPQUFKLElBQUEsRUFBaUM7QUFDL0I7QUFDQSxJQUFBLEVBQUEsQ0FBQSxNQUFBLENBQUEsQ0FBUSxVQUFVLEdBQWxCLENBQUE7QUFGRixHQUFBLE1BR087QUFDTCxJQUFBLEVBQUUsQ0FBRixTQUFBLENBQUEsV0FBQSxFQUFBLGFBQUE7QUFDQSxJQUFBLEVBQUUsQ0FBRixLQUFBLENBQUEsSUFBQSxDQUFBLFFBQUE7QUFDRDtBQW5CSCxDQUFBOztBQXNCQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBaUMsVUFBRCxFQUFDLEVBQU07QUFDckMsRUFBQSxFQUFFLENBQUYsUUFBQTtBQURGLENBQUE7O0FBSUEsd0JBQUEsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQStCLFVBQUEsRUFBQSxFQUFBLEtBQUEsRUFBd0I7QUFBQSxNQUFaLE1BQVksR0FBQSxLQUFBLENBQWpCLEdBQWlCO0FBQ3JELE1BQUksS0FBSyxHQUFHLEVBQUUsQ0FBZCxLQUFBO0FBQ0EsTUFBSSxRQUFRLEdBQVMsS0FBSyxDQUExQixJQUFxQixFQUFyQjtBQUNBLE1BQUksSUFBSSxHQUFHLFFBQVEsQ0FBbkIsSUFBVyxFQUFYOztBQUVBLE1BQUksSUFBSSxLQUFSLElBQUEsRUFBbUI7QUFDakIsSUFBQSxFQUFFLENBQUYsWUFBQSxDQUFnQixFQUFFLENBQUYsU0FBQSxDQUFoQixJQUFnQixDQUFoQjtBQURGLEdBQUEsTUFFTztBQUNMLElBQUEsRUFBQSxDQUFBLE1BQUEsQ0FBQSxDQUFBLE1BQUE7QUFDRDtBQVRILENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVJdGVyYXRvclJlZiwgdmFsdWVGb3JSZWYgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IENoZWNrUmVmZXJlbmNlLCBDaGVja0l0ZXJhdG9yIH0gZnJvbSAnLi8tZGVidWctc3RyaXAnO1xuaW1wb3J0IHsgY2hlY2sgfSBmcm9tICdAZ2xpbW1lci9kZWJ1Zyc7XG5pbXBvcnQgeyBPcCB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXNzZXJ0RmlsdGVyIH0gZnJvbSAnLi92bSc7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5FbnRlckxpc3QsICh2bSwgeyBvcDE6IHJlbGF0aXZlU3RhcnQsIG9wMjogZWxzZVRhcmdldCB9KSA9PiB7XG4gIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICBsZXQgbGlzdFJlZiA9IGNoZWNrKHN0YWNrLnBvcCgpLCBDaGVja1JlZmVyZW5jZSk7XG4gIGxldCBrZXlSZWYgPSBjaGVjayhzdGFjay5wb3AoKSwgQ2hlY2tSZWZlcmVuY2UpO1xuXG4gIGxldCBrZXlWYWx1ZSA9IHZhbHVlRm9yUmVmKGtleVJlZik7XG4gIGxldCBrZXkgPSBrZXlWYWx1ZSA9PT0gbnVsbCA/ICdAaWRlbnRpdHknIDogU3RyaW5nKGtleVZhbHVlKTtcblxuICBsZXQgaXRlcmF0b3JSZWYgPSBjcmVhdGVJdGVyYXRvclJlZihsaXN0UmVmLCBrZXkpO1xuICBsZXQgaXRlcmF0b3IgPSB2YWx1ZUZvclJlZihpdGVyYXRvclJlZik7XG5cbiAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0RmlsdGVyKGl0ZXJhdG9yUmVmLCAoaXRlcmF0b3IpID0+IGl0ZXJhdG9yLmlzRW1wdHkoKSkpO1xuXG4gIGlmIChpdGVyYXRvci5pc0VtcHR5KCkgPT09IHRydWUpIHtcbiAgICAvLyBUT0RPOiBGaXggdGhpcyBvZmZzZXQsIHNob3VsZCBiZSBhY2N1cmF0ZVxuICAgIHZtLmdvdG8oZWxzZVRhcmdldCArIDEpO1xuICB9IGVsc2Uge1xuICAgIHZtLmVudGVyTGlzdChpdGVyYXRvclJlZiwgcmVsYXRpdmVTdGFydCk7XG4gICAgdm0uc3RhY2sucHVzaChpdGVyYXRvcik7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRXhpdExpc3QsICh2bSkgPT4ge1xuICB2bS5leGl0TGlzdCgpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5JdGVyYXRlLCAodm0sIHsgb3AxOiBicmVha3MgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGl0ZXJhdG9yID0gY2hlY2soc3RhY2sucGVlaygpLCBDaGVja0l0ZXJhdG9yKTtcbiAgbGV0IGl0ZW0gPSBpdGVyYXRvci5uZXh0KCk7XG5cbiAgaWYgKGl0ZW0gIT09IG51bGwpIHtcbiAgICB2bS5yZWdpc3Rlckl0ZW0odm0uZW50ZXJJdGVtKGl0ZW0pKTtcbiAgfSBlbHNlIHtcbiAgICB2bS5nb3RvKGJyZWFrcyk7XG4gIH1cbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==