@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
46 lines (40 loc) • 3.96 kB
JavaScript
import { associateDestroyableChild, registerDestructor } from '@glimmer/destroyable';
import { clear } from '../bounds';
import UpdatingVMImpl from './update';
export default class RenderResultImpl {
constructor(env, updating, bounds, drop) {
this.env = env;
this.updating = updating;
this.bounds = bounds;
this.drop = drop;
associateDestroyableChild(this, drop);
registerDestructor(this, () => clear(this.bounds));
}
rerender({
alwaysRevalidate = false
} = {
alwaysRevalidate: false
}) {
let {
env,
updating
} = this;
let vm = new UpdatingVMImpl(env, {
alwaysRevalidate
});
vm.execute(updating, this);
}
parentElement() {
return this.bounds.parentElement();
}
firstNode() {
return this.bounds.firstNode();
}
lastNode() {
return this.bounds.lastNode();
}
handleException() {
throw 'this should never happen';
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL3JlbmRlci1yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBUyx5QkFBVCxFQUFvQyxrQkFBcEMsUUFBOEQsc0JBQTlEO0FBRUEsU0FBUyxLQUFULFFBQXNCLFdBQXRCO0FBQ0EsT0FBTyxjQUFQLE1BQTJCLFVBQTNCO0FBRUEsZUFBYyxNQUFPLGdCQUFQLENBQXVCO0FBQ25DLEVBQUEsV0FBQSxDQUNTLEdBRFQsRUFFVSxRQUZWLEVBR1UsTUFIVixFQUlXLElBSlgsRUFJdUI7QUFIZCxTQUFBLEdBQUEsR0FBQSxHQUFBO0FBQ0MsU0FBQSxRQUFBLEdBQUEsUUFBQTtBQUNBLFNBQUEsTUFBQSxHQUFBLE1BQUE7QUFDQyxTQUFBLElBQUEsR0FBQSxJQUFBO0FBRVQsSUFBQSx5QkFBeUIsQ0FBQyxJQUFELEVBQU8sSUFBUCxDQUF6QjtBQUNBLElBQUEsa0JBQWtCLENBQUMsSUFBRCxFQUFPLE1BQU0sS0FBSyxDQUFDLEtBQUssTUFBTixDQUFsQixDQUFsQjtBQUNEOztBQUVELEVBQUEsUUFBUSxDQUFDO0FBQUUsSUFBQSxnQkFBZ0IsR0FBRztBQUFyQixNQUErQjtBQUFFLElBQUEsZ0JBQWdCLEVBQUU7QUFBcEIsR0FBaEMsRUFBMkQ7QUFDakUsUUFBSTtBQUFFLE1BQUEsR0FBRjtBQUFPLE1BQUE7QUFBUCxRQUFvQixJQUF4QjtBQUNBLFFBQUksRUFBRSxHQUFHLElBQUksY0FBSixDQUFtQixHQUFuQixFQUF3QjtBQUFFLE1BQUE7QUFBRixLQUF4QixDQUFUO0FBQ0EsSUFBQSxFQUFFLENBQUMsT0FBSCxDQUFXLFFBQVgsRUFBcUIsSUFBckI7QUFDRDs7QUFFRCxFQUFBLGFBQWEsR0FBQTtBQUNYLFdBQU8sS0FBSyxNQUFMLENBQVksYUFBWixFQUFQO0FBQ0Q7O0FBRUQsRUFBQSxTQUFTLEdBQUE7QUFDUCxXQUFPLEtBQUssTUFBTCxDQUFZLFNBQVosRUFBUDtBQUNEOztBQUVELEVBQUEsUUFBUSxHQUFBO0FBQ04sV0FBTyxLQUFLLE1BQUwsQ0FBWSxRQUFaLEVBQVA7QUFDRDs7QUFFRCxFQUFBLGVBQWUsR0FBQTtBQUNiLFVBQU0sMEJBQU47QUFDRDs7QUEvQmtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnQsIFJlbmRlclJlc3VsdCwgTGl2ZUJsb2NrLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgYXNzb2NpYXRlRGVzdHJveWFibGVDaGlsZCwgcmVnaXN0ZXJEZXN0cnVjdG9yIH0gZnJvbSAnQGdsaW1tZXIvZGVzdHJveWFibGUnO1xuaW1wb3J0IHsgU2ltcGxlRWxlbWVudCwgU2ltcGxlTm9kZSB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBjbGVhciB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgVXBkYXRpbmdWTUltcGwgZnJvbSAnLi91cGRhdGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZW5kZXJSZXN1bHRJbXBsIGltcGxlbWVudHMgUmVuZGVyUmVzdWx0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVudjogRW52aXJvbm1lbnQsXG4gICAgcHJpdmF0ZSB1cGRhdGluZzogVXBkYXRpbmdPcGNvZGVbXSxcbiAgICBwcml2YXRlIGJvdW5kczogTGl2ZUJsb2NrLFxuICAgIHJlYWRvbmx5IGRyb3A6IG9iamVjdFxuICApIHtcbiAgICBhc3NvY2lhdGVEZXN0cm95YWJsZUNoaWxkKHRoaXMsIGRyb3ApO1xuICAgIHJlZ2lzdGVyRGVzdHJ1Y3Rvcih0aGlzLCAoKSA9PiBjbGVhcih0aGlzLmJvdW5kcykpO1xuICB9XG5cbiAgcmVyZW5kZXIoeyBhbHdheXNSZXZhbGlkYXRlID0gZmFsc2UgfSA9IHsgYWx3YXlzUmV2YWxpZGF0ZTogZmFsc2UgfSkge1xuICAgIGxldCB7IGVudiwgdXBkYXRpbmcgfSA9IHRoaXM7XG4gICAgbGV0IHZtID0gbmV3IFVwZGF0aW5nVk1JbXBsKGVudiwgeyBhbHdheXNSZXZhbGlkYXRlIH0pO1xuICAgIHZtLmV4ZWN1dGUodXBkYXRpbmcsIHRoaXMpO1xuICB9XG5cbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5maXJzdE5vZGUoKTtcbiAgfVxuXG4gIGxhc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5sYXN0Tm9kZSgpO1xuICB9XG5cbiAgaGFuZGxlRXhjZXB0aW9uKCkge1xuICAgIHRocm93ICd0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4nO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9