@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
100 lines (76 loc) • 6.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.move = move;
exports.clear = clear;
exports.SingleNodeBounds = exports.ConcreteBounds = exports.CursorImpl = void 0;
class CursorImpl {
constructor(element, nextSibling) {
this.element = element;
this.nextSibling = nextSibling;
}
}
exports.CursorImpl = CursorImpl;
class ConcreteBounds {
constructor(parentNode, first, last) {
this.parentNode = parentNode;
this.first = first;
this.last = last;
}
parentElement() {
return this.parentNode;
}
firstNode() {
return this.first;
}
lastNode() {
return this.last;
}
}
exports.ConcreteBounds = ConcreteBounds;
class SingleNodeBounds {
constructor(parentNode, node) {
this.parentNode = parentNode;
this.node = node;
}
parentElement() {
return this.parentNode;
}
firstNode() {
return this.node;
}
lastNode() {
return this.node;
}
}
exports.SingleNodeBounds = SingleNodeBounds;
function move(bounds, reference) {
let parent = bounds.parentElement();
let first = bounds.firstNode();
let last = bounds.lastNode();
let current = first;
while (true) {
let next = current.nextSibling;
parent.insertBefore(current, reference);
if (current === last) {
return next;
}
current = next;
}
}
function clear(bounds) {
let parent = bounds.parentElement();
let first = bounds.firstNode();
let last = bounds.lastNode();
let current = first;
while (true) {
let next = current.nextSibling;
parent.removeChild(current);
if (current === last) {
return next;
}
current = next;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2JvdW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFJTSxNQUFBLFVBQUEsQ0FBaUI7QUFDckIsRUFBQSxXQUFBLENBQUEsT0FBQSxFQUFBLFdBQUEsRUFBaUY7QUFBOUQsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUErQixTQUFBLFdBQUEsR0FBQSxXQUFBO0FBQW1DOztBQURoRTs7OztBQU1qQixNQUFBLGNBQUEsQ0FBcUI7QUFDekIsRUFBQSxXQUFBLENBQUEsVUFBQSxFQUFBLEtBQUEsRUFBQSxJQUFBLEVBRzBCO0FBRmpCLFNBQUEsVUFBQSxHQUFBLFVBQUE7QUFDQyxTQUFBLEtBQUEsR0FBQSxLQUFBO0FBQ0EsU0FBQSxJQUFBLEdBQUEsSUFBQTtBQUNOOztBQUVKLEVBQUEsYUFBYSxHQUFBO0FBQ1gsV0FBTyxLQUFQLFVBQUE7QUFDRDs7QUFFRCxFQUFBLFNBQVMsR0FBQTtBQUNQLFdBQU8sS0FBUCxLQUFBO0FBQ0Q7O0FBRUQsRUFBQSxRQUFRLEdBQUE7QUFDTixXQUFPLEtBQVAsSUFBQTtBQUNEOztBQWpCd0I7Ozs7QUFvQnJCLE1BQUEsZ0JBQUEsQ0FBdUI7QUFDM0IsRUFBQSxXQUFBLENBQUEsVUFBQSxFQUFBLElBQUEsRUFBdUU7QUFBbkQsU0FBQSxVQUFBLEdBQUEsVUFBQTtBQUFtQyxTQUFBLElBQUEsR0FBQSxJQUFBO0FBQW9COztBQUUzRSxFQUFBLGFBQWEsR0FBQTtBQUNYLFdBQU8sS0FBUCxVQUFBO0FBQ0Q7O0FBRUQsRUFBQSxTQUFTLEdBQUE7QUFDUCxXQUFPLEtBQVAsSUFBQTtBQUNEOztBQUVELEVBQUEsUUFBUSxHQUFBO0FBQ04sV0FBTyxLQUFQLElBQUE7QUFDRDs7QUFiMEI7Ozs7QUFnQnZCLFNBQUEsSUFBQSxDQUFBLE1BQUEsRUFBQSxTQUFBLEVBQTREO0FBQ2hFLE1BQUksTUFBTSxHQUFHLE1BQU0sQ0FBbkIsYUFBYSxFQUFiO0FBQ0EsTUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFsQixTQUFZLEVBQVo7QUFDQSxNQUFJLElBQUksR0FBRyxNQUFNLENBQWpCLFFBQVcsRUFBWDtBQUVBLE1BQUksT0FBTyxHQUFYLEtBQUE7O0FBRUEsU0FBQSxJQUFBLEVBQWE7QUFDWCxRQUFJLElBQUksR0FBRyxPQUFPLENBQWxCLFdBQUE7QUFFQSxJQUFBLE1BQU0sQ0FBTixZQUFBLENBQUEsT0FBQSxFQUFBLFNBQUE7O0FBRUEsUUFBSSxPQUFPLEtBQVgsSUFBQSxFQUFzQjtBQUNwQixhQUFBLElBQUE7QUFDRDs7QUFFRCxJQUFBLE9BQU8sR0FBUCxJQUFBO0FBQ0Q7QUFDRjs7QUFFSyxTQUFBLEtBQUEsQ0FBQSxNQUFBLEVBQThCO0FBQ2xDLE1BQUksTUFBTSxHQUFHLE1BQU0sQ0FBbkIsYUFBYSxFQUFiO0FBQ0EsTUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFsQixTQUFZLEVBQVo7QUFDQSxNQUFJLElBQUksR0FBRyxNQUFNLENBQWpCLFFBQVcsRUFBWDtBQUVBLE1BQUksT0FBTyxHQUFYLEtBQUE7O0FBRUEsU0FBQSxJQUFBLEVBQWE7QUFDWCxRQUFJLElBQUksR0FBRyxPQUFPLENBQWxCLFdBQUE7QUFFQSxJQUFBLE1BQU0sQ0FBTixXQUFBLENBQUEsT0FBQTs7QUFFQSxRQUFJLE9BQU8sS0FBWCxJQUFBLEVBQXNCO0FBQ3BCLGFBQUEsSUFBQTtBQUNEOztBQUVELElBQUEsT0FBTyxHQUFQLElBQUE7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRzLCBDdXJzb3IsIE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2ltcGxlRWxlbWVudCwgU2ltcGxlTm9kZSB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuZXhwb3J0IGNsYXNzIEN1cnNvckltcGwgaW1wbGVtZW50cyBDdXJzb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogU2ltcGxlRWxlbWVudCwgcHVibGljIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlTm9kZT4pIHt9XG59XG5cbmV4cG9ydCB0eXBlIERlc3Ryb3lhYmxlQm91bmRzID0gQm91bmRzO1xuXG5leHBvcnQgY2xhc3MgQ29uY3JldGVCb3VuZHMgaW1wbGVtZW50cyBCb3VuZHMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGFyZW50Tm9kZTogU2ltcGxlRWxlbWVudCxcbiAgICBwcml2YXRlIGZpcnN0OiBTaW1wbGVOb2RlLFxuICAgIHByaXZhdGUgbGFzdDogU2ltcGxlTm9kZVxuICApIHt9XG5cbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmZpcnN0O1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubGFzdDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2luZ2xlTm9kZUJvdW5kcyBpbXBsZW1lbnRzIEJvdW5kcyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50Tm9kZTogU2ltcGxlRWxlbWVudCwgcHJpdmF0ZSBub2RlOiBTaW1wbGVOb2RlKSB7fVxuXG4gIHBhcmVudEVsZW1lbnQoKTogU2ltcGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZShib3VuZHM6IEJvdW5kcywgcmVmZXJlbmNlOiBPcHRpb248U2ltcGxlTm9kZT4pOiBPcHRpb248U2ltcGxlTm9kZT4ge1xuICBsZXQgcGFyZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgbGV0IGZpcnN0ID0gYm91bmRzLmZpcnN0Tm9kZSgpO1xuICBsZXQgbGFzdCA9IGJvdW5kcy5sYXN0Tm9kZSgpO1xuXG4gIGxldCBjdXJyZW50OiBTaW1wbGVOb2RlID0gZmlyc3Q7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBsZXQgbmV4dCA9IGN1cnJlbnQubmV4dFNpYmxpbmc7XG5cbiAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGN1cnJlbnQsIHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoY3VycmVudCA9PT0gbGFzdCkge1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfVxuXG4gICAgY3VycmVudCA9IGV4cGVjdChuZXh0LCAnaW52YWxpZCBib3VuZHMnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYm91bmRzOiBCb3VuZHMpOiBPcHRpb248U2ltcGxlTm9kZT4ge1xuICBsZXQgcGFyZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgbGV0IGZpcnN0ID0gYm91bmRzLmZpcnN0Tm9kZSgpO1xuICBsZXQgbGFzdCA9IGJvdW5kcy5sYXN0Tm9kZSgpO1xuXG4gIGxldCBjdXJyZW50OiBTaW1wbGVOb2RlID0gZmlyc3Q7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBsZXQgbmV4dCA9IGN1cnJlbnQubmV4dFNpYmxpbmc7XG5cbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoY3VycmVudCk7XG5cbiAgICBpZiAoY3VycmVudCA9PT0gbGFzdCkge1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfVxuXG4gICAgY3VycmVudCA9IGV4cGVjdChuZXh0LCAnaW52YWxpZCBib3VuZHMnKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==