UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

100 lines (76 loc) 6.44 kB
"use strict"; 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==