UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

47 lines (45 loc) 5.12 kB
import { createIteratorRef, valueForRef } from '@glimmer/reference'; import { APPEND_OPCODES } from '../../opcodes'; import { AssertFilter } from './vm'; 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 = valueForRef(keyRef); var key = keyValue === null ? '@identity' : String(keyValue); var iteratorRef = createIteratorRef(listRef, key); var iterator = valueForRef(iteratorRef); vm.updateWith(new 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); } }); APPEND_OPCODES.add(73 /* ExitList */ , function (vm) { vm.exitList(); }); 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvbGlzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBQSxpQkFBQSxFQUFBLFdBQUEsUUFBQSxvQkFBQTtBQUNBLFNBQUEsY0FBQSxRQUFBLGVBQUE7QUFJQSxTQUFBLFlBQUEsUUFBQSxNQUFBO0FBRUEsY0FBYyxDQUFkLEdBQUEsQ0FBa0I7QUFBQTtBQUFsQixFQUFpQyxVQUFBLEVBQUEsUUFBZ0Q7QUFBQSxNQUEzQyxhQUEyQyxRQUF6QyxHQUF5QztBQUFBLE1BQWhCLFVBQWdCLFFBQXJCLEdBQXFCO0FBQy9FLE1BQUksS0FBSyxHQUFHLEVBQUUsQ0FBZCxLQUFBO0FBQ0EsTUFBSSxPQUFPLEdBQVMsS0FBSyxDQUF6QixHQUFvQixFQUFwQjtBQUNBLE1BQUksTUFBTSxHQUFTLEtBQUssQ0FBeEIsR0FBbUIsRUFBbkI7QUFFQSxNQUFJLFFBQVEsR0FBRyxXQUFXLENBQTFCLE1BQTBCLENBQTFCO0FBQ0EsTUFBSSxHQUFHLEdBQUcsUUFBUSxLQUFSLElBQUEsR0FBQSxXQUFBLEdBQWtDLE1BQU0sQ0FBbEQsUUFBa0QsQ0FBbEQ7QUFFQSxNQUFJLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQSxPQUFBLEVBQW5DLEdBQW1DLENBQW5DO0FBQ0EsTUFBSSxRQUFRLEdBQUcsV0FBVyxDQUExQixXQUEwQixDQUExQjtBQUVBLEVBQUEsRUFBRSxDQUFGLFVBQUEsQ0FBYyxJQUFBLFlBQUEsQ0FBQSxXQUFBLEVBQStCLFVBQUEsUUFBRDtBQUFBLFdBQWMsUUFBUSxDQUFsRSxPQUEwRCxFQUFkO0FBQUEsR0FBOUIsQ0FBZDs7QUFFQSxNQUFJLFFBQVEsQ0FBUixPQUFBLE9BQUosSUFBQSxFQUFpQztBQUMvQjtBQUNBLElBQUEsRUFBQSxRQUFBLENBQVEsVUFBVSxHQUFsQixDQUFBO0FBRkYsR0FBQSxNQUdPO0FBQ0wsSUFBQSxFQUFFLENBQUYsU0FBQSxDQUFBLFdBQUEsRUFBQSxhQUFBO0FBQ0EsSUFBQSxFQUFFLENBQUYsS0FBQSxDQUFBLElBQUEsQ0FBQSxRQUFBO0FBQ0Q7QUFuQkgsQ0FBQTtBQXNCQSxjQUFjLENBQWQsR0FBQSxDQUFrQjtBQUFBO0FBQWxCLEVBQWlDLFVBQUEsRUFBRCxFQUFPO0FBQ3JDLEVBQUEsRUFBRSxDQUFGLFFBQUE7QUFERixDQUFBO0FBSUEsY0FBYyxDQUFkLEdBQUEsQ0FBa0I7QUFBQTtBQUFsQixFQUErQixVQUFBLEVBQUEsU0FBd0I7QUFBQSxNQUFaLE1BQVksU0FBakIsR0FBaUI7QUFDckQsTUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFkLEtBQUE7QUFDQSxNQUFJLFFBQVEsR0FBUyxLQUFLLENBQTFCLElBQXFCLEVBQXJCO0FBQ0EsTUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFuQixJQUFXLEVBQVg7O0FBRUEsTUFBSSxJQUFJLEtBQVIsSUFBQSxFQUFtQjtBQUNqQixJQUFBLEVBQUUsQ0FBRixZQUFBLENBQWdCLEVBQUUsQ0FBRixTQUFBLENBQWhCLElBQWdCLENBQWhCO0FBREYsR0FBQSxNQUVPO0FBQ0wsSUFBQSxFQUFBLFFBQUEsQ0FBQSxNQUFBO0FBQ0Q7QUFUSCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSXRlcmF0b3JSZWYsIHZhbHVlRm9yUmVmIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDaGVja1JlZmVyZW5jZSwgQ2hlY2tJdGVyYXRvciB9IGZyb20gJy4vLWRlYnVnLXN0cmlwJztcbmltcG9ydCB7IGNoZWNrIH0gZnJvbSAnQGdsaW1tZXIvZGVidWcnO1xuaW1wb3J0IHsgT3AgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFzc2VydEZpbHRlciB9IGZyb20gJy4vdm0nO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuRW50ZXJMaXN0LCAodm0sIHsgb3AxOiByZWxhdGl2ZVN0YXJ0LCBvcDI6IGVsc2VUYXJnZXQgfSkgPT4ge1xuICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgbGV0IGxpc3RSZWYgPSBjaGVjayhzdGFjay5wb3AoKSwgQ2hlY2tSZWZlcmVuY2UpO1xuICBsZXQga2V5UmVmID0gY2hlY2soc3RhY2sucG9wKCksIENoZWNrUmVmZXJlbmNlKTtcblxuICBsZXQga2V5VmFsdWUgPSB2YWx1ZUZvclJlZihrZXlSZWYpO1xuICBsZXQga2V5ID0ga2V5VmFsdWUgPT09IG51bGwgPyAnQGlkZW50aXR5JyA6IFN0cmluZyhrZXlWYWx1ZSk7XG5cbiAgbGV0IGl0ZXJhdG9yUmVmID0gY3JlYXRlSXRlcmF0b3JSZWYobGlzdFJlZiwga2V5KTtcbiAgbGV0IGl0ZXJhdG9yID0gdmFsdWVGb3JSZWYoaXRlcmF0b3JSZWYpO1xuXG4gIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydEZpbHRlcihpdGVyYXRvclJlZiwgKGl0ZXJhdG9yKSA9PiBpdGVyYXRvci5pc0VtcHR5KCkpKTtcblxuICBpZiAoaXRlcmF0b3IuaXNFbXB0eSgpID09PSB0cnVlKSB7XG4gICAgLy8gVE9ETzogRml4IHRoaXMgb2Zmc2V0LCBzaG91bGQgYmUgYWNjdXJhdGVcbiAgICB2bS5nb3RvKGVsc2VUYXJnZXQgKyAxKTtcbiAgfSBlbHNlIHtcbiAgICB2bS5lbnRlckxpc3QoaXRlcmF0b3JSZWYsIHJlbGF0aXZlU3RhcnQpO1xuICAgIHZtLnN0YWNrLnB1c2goaXRlcmF0b3IpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkV4aXRMaXN0LCAodm0pID0+IHtcbiAgdm0uZXhpdExpc3QoKTtcbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuSXRlcmF0ZSwgKHZtLCB7IG9wMTogYnJlYWtzIH0pID0+IHtcbiAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gIGxldCBpdGVyYXRvciA9IGNoZWNrKHN0YWNrLnBlZWsoKSwgQ2hlY2tJdGVyYXRvcik7XG4gIGxldCBpdGVtID0gaXRlcmF0b3IubmV4dCgpO1xuXG4gIGlmIChpdGVtICE9PSBudWxsKSB7XG4gICAgdm0ucmVnaXN0ZXJJdGVtKHZtLmVudGVySXRlbShpdGVtKSk7XG4gIH0gZWxzZSB7XG4gICAgdm0uZ290byhicmVha3MpO1xuICB9XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=