UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

54 lines (46 loc) 4.97 kB
"use strict"; 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==