UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

81 lines (66 loc) 6.18 kB
export class CursorImpl { constructor(element, nextSibling) { this.element = element; this.nextSibling = nextSibling; } } export 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; } } export class SingleNodeBounds { constructor(parentNode, node) { this.parentNode = parentNode; this.node = node; } parentElement() { return this.parentNode; } firstNode() { return this.node; } lastNode() { return this.node; } } export 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; } } export 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2JvdW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFNLE1BQU8sVUFBUCxDQUFpQjtBQUNyQixFQUFBLFdBQUEsQ0FBbUIsT0FBbkIsRUFBa0QsV0FBbEQsRUFBaUY7QUFBOUQsU0FBQSxPQUFBLEdBQUEsT0FBQTtBQUErQixTQUFBLFdBQUEsR0FBQSxXQUFBO0FBQW1DOztBQURoRTtBQU12QixPQUFNLE1BQU8sY0FBUCxDQUFxQjtBQUN6QixFQUFBLFdBQUEsQ0FDUyxVQURULEVBRVUsS0FGVixFQUdVLElBSFYsRUFHMEI7QUFGakIsU0FBQSxVQUFBLEdBQUEsVUFBQTtBQUNDLFNBQUEsS0FBQSxHQUFBLEtBQUE7QUFDQSxTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ047O0FBRUosRUFBQSxhQUFhLEdBQUE7QUFDWCxXQUFPLEtBQUssVUFBWjtBQUNEOztBQUVELEVBQUEsU0FBUyxHQUFBO0FBQ1AsV0FBTyxLQUFLLEtBQVo7QUFDRDs7QUFFRCxFQUFBLFFBQVEsR0FBQTtBQUNOLFdBQU8sS0FBSyxJQUFaO0FBQ0Q7O0FBakJ3QjtBQW9CM0IsT0FBTSxNQUFPLGdCQUFQLENBQXVCO0FBQzNCLEVBQUEsV0FBQSxDQUFvQixVQUFwQixFQUF1RCxJQUF2RCxFQUF1RTtBQUFuRCxTQUFBLFVBQUEsR0FBQSxVQUFBO0FBQW1DLFNBQUEsSUFBQSxHQUFBLElBQUE7QUFBb0I7O0FBRTNFLEVBQUEsYUFBYSxHQUFBO0FBQ1gsV0FBTyxLQUFLLFVBQVo7QUFDRDs7QUFFRCxFQUFBLFNBQVMsR0FBQTtBQUNQLFdBQU8sS0FBSyxJQUFaO0FBQ0Q7O0FBRUQsRUFBQSxRQUFRLEdBQUE7QUFDTixXQUFPLEtBQUssSUFBWjtBQUNEOztBQWIwQjtBQWdCN0IsT0FBTSxTQUFVLElBQVYsQ0FBZSxNQUFmLEVBQStCLFNBQS9CLEVBQTREO0FBQ2hFLE1BQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxhQUFQLEVBQWI7QUFDQSxNQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUCxFQUFaO0FBQ0EsTUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLFFBQVAsRUFBWDtBQUVBLE1BQUksT0FBTyxHQUFlLEtBQTFCOztBQUVBLFNBQU8sSUFBUCxFQUFhO0FBQ1gsUUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQW5CO0FBRUEsSUFBQSxNQUFNLENBQUMsWUFBUCxDQUFvQixPQUFwQixFQUE2QixTQUE3Qjs7QUFFQSxRQUFJLE9BQU8sS0FBSyxJQUFoQixFQUFzQjtBQUNwQixhQUFPLElBQVA7QUFDRDs7QUFFRCxJQUFBLE9BQU8sR0FBVSxJQUFqQjtBQUNEO0FBQ0Y7QUFFRCxPQUFNLFNBQVUsS0FBVixDQUFnQixNQUFoQixFQUE4QjtBQUNsQyxNQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsYUFBUCxFQUFiO0FBQ0EsTUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVAsRUFBWjtBQUNBLE1BQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFQLEVBQVg7QUFFQSxNQUFJLE9BQU8sR0FBZSxLQUExQjs7QUFFQSxTQUFPLElBQVAsRUFBYTtBQUNYLFFBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxXQUFuQjtBQUVBLElBQUEsTUFBTSxDQUFDLFdBQVAsQ0FBbUIsT0FBbkI7O0FBRUEsUUFBSSxPQUFPLEtBQUssSUFBaEIsRUFBc0I7QUFDcEIsYUFBTyxJQUFQO0FBQ0Q7O0FBRUQsSUFBQSxPQUFPLEdBQVUsSUFBakI7QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm91bmRzLCBDdXJzb3IsIE9wdGlvbiB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU2ltcGxlRWxlbWVudCwgU2ltcGxlTm9kZSB9IGZyb20gJ0BzaW1wbGUtZG9tL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBleHBlY3QgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuZXhwb3J0IGNsYXNzIEN1cnNvckltcGwgaW1wbGVtZW50cyBDdXJzb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudDogU2ltcGxlRWxlbWVudCwgcHVibGljIG5leHRTaWJsaW5nOiBPcHRpb248U2ltcGxlTm9kZT4pIHt9XG59XG5cbmV4cG9ydCB0eXBlIERlc3Ryb3lhYmxlQm91bmRzID0gQm91bmRzO1xuXG5leHBvcnQgY2xhc3MgQ29uY3JldGVCb3VuZHMgaW1wbGVtZW50cyBCb3VuZHMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGFyZW50Tm9kZTogU2ltcGxlRWxlbWVudCxcbiAgICBwcml2YXRlIGZpcnN0OiBTaW1wbGVOb2RlLFxuICAgIHByaXZhdGUgbGFzdDogU2ltcGxlTm9kZVxuICApIHt9XG5cbiAgcGFyZW50RWxlbWVudCgpOiBTaW1wbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZmlyc3ROb2RlKCk6IFNpbXBsZU5vZGUge1xuICAgIHJldHVybiB0aGlzLmZpcnN0O1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubGFzdDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2luZ2xlTm9kZUJvdW5kcyBpbXBsZW1lbnRzIEJvdW5kcyB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGFyZW50Tm9kZTogU2ltcGxlRWxlbWVudCwgcHJpdmF0ZSBub2RlOiBTaW1wbGVOb2RlKSB7fVxuXG4gIHBhcmVudEVsZW1lbnQoKTogU2ltcGxlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpOiBTaW1wbGVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbiAgbGFzdE5vZGUoKTogU2ltcGxlTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW92ZShib3VuZHM6IEJvdW5kcywgcmVmZXJlbmNlOiBPcHRpb248U2ltcGxlTm9kZT4pOiBPcHRpb248U2ltcGxlTm9kZT4ge1xuICBsZXQgcGFyZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgbGV0IGZpcnN0ID0gYm91bmRzLmZpcnN0Tm9kZSgpO1xuICBsZXQgbGFzdCA9IGJvdW5kcy5sYXN0Tm9kZSgpO1xuXG4gIGxldCBjdXJyZW50OiBTaW1wbGVOb2RlID0gZmlyc3Q7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBsZXQgbmV4dCA9IGN1cnJlbnQubmV4dFNpYmxpbmc7XG5cbiAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGN1cnJlbnQsIHJlZmVyZW5jZSk7XG5cbiAgICBpZiAoY3VycmVudCA9PT0gbGFzdCkge1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfVxuXG4gICAgY3VycmVudCA9IGV4cGVjdChuZXh0LCAnaW52YWxpZCBib3VuZHMnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXIoYm91bmRzOiBCb3VuZHMpOiBPcHRpb248U2ltcGxlTm9kZT4ge1xuICBsZXQgcGFyZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgbGV0IGZpcnN0ID0gYm91bmRzLmZpcnN0Tm9kZSgpO1xuICBsZXQgbGFzdCA9IGJvdW5kcy5sYXN0Tm9kZSgpO1xuXG4gIGxldCBjdXJyZW50OiBTaW1wbGVOb2RlID0gZmlyc3Q7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBsZXQgbmV4dCA9IGN1cnJlbnQubmV4dFNpYmxpbmc7XG5cbiAgICBwYXJlbnQucmVtb3ZlQ2hpbGQoY3VycmVudCk7XG5cbiAgICBpZiAoY3VycmVudCA9PT0gbGFzdCkge1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfVxuXG4gICAgY3VycmVudCA9IGV4cGVjdChuZXh0LCAnaW52YWxpZCBib3VuZHMnKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==