@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
33 lines (29 loc) • 3.18 kB
JavaScript
import { isEmpty, isString } from '../../dom/normalize';
import { valueForRef } from '@glimmer/reference';
export default class DynamicTextContent {
constructor(node, reference, lastValue) {
this.node = node;
this.reference = reference;
this.lastValue = lastValue;
}
evaluate() {
let value = valueForRef(this.reference);
let {
lastValue
} = this;
if (value === lastValue) return;
let normalized;
if (isEmpty(value)) {
normalized = '';
} else if (isString(value)) {
normalized = value;
} else {
normalized = String(value);
}
if (normalized !== lastValue) {
let textNode = this.node;
textNode.nodeValue = this.lastValue = normalized;
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL3ZtL2NvbnRlbnQvdGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTLE9BQVQsRUFBa0IsUUFBbEIsUUFBa0MscUJBQWxDO0FBRUEsU0FBb0IsV0FBcEIsUUFBdUMsb0JBQXZDO0FBR0EsZUFBYyxNQUFPLGtCQUFQLENBQXlCO0FBQ3JDLEVBQUEsV0FBQSxDQUNTLElBRFQsRUFFVSxTQUZWLEVBR1UsU0FIVixFQUcyQjtBQUZsQixTQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0MsU0FBQSxTQUFBLEdBQUEsU0FBQTtBQUNBLFNBQUEsU0FBQSxHQUFBLFNBQUE7QUFDTjs7QUFFSixFQUFBLFFBQVEsR0FBQTtBQUNOLFFBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLFNBQU4sQ0FBdkI7QUFFQSxRQUFJO0FBQUUsTUFBQTtBQUFGLFFBQWdCLElBQXBCO0FBRUEsUUFBSSxLQUFLLEtBQUssU0FBZCxFQUF5QjtBQUV6QixRQUFJLFVBQUo7O0FBRUEsUUFBSSxPQUFPLENBQUMsS0FBRCxDQUFYLEVBQW9CO0FBQ2xCLE1BQUEsVUFBVSxHQUFHLEVBQWI7QUFDRCxLQUZELE1BRU8sSUFBSSxRQUFRLENBQUMsS0FBRCxDQUFaLEVBQXFCO0FBQzFCLE1BQUEsVUFBVSxHQUFHLEtBQWI7QUFDRCxLQUZNLE1BRUE7QUFDTCxNQUFBLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBRCxDQUFuQjtBQUNEOztBQUVELFFBQUksVUFBVSxLQUFLLFNBQW5CLEVBQThCO0FBQzVCLFVBQUksUUFBUSxHQUFHLEtBQUssSUFBcEI7QUFDQSxNQUFBLFFBQVEsQ0FBQyxTQUFULEdBQXFCLEtBQUssU0FBTCxHQUFpQixVQUF0QztBQUNEO0FBQ0Y7O0FBNUJvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRW1wdHksIGlzU3RyaW5nIH0gZnJvbSAnLi4vLi4vZG9tL25vcm1hbGl6ZSc7XG5pbXBvcnQgeyBVcGRhdGluZ09wY29kZSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCB2YWx1ZUZvclJlZiB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBTaW1wbGVUZXh0IH0gZnJvbSAnQHNpbXBsZS1kb20vaW50ZXJmYWNlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHluYW1pY1RleHRDb250ZW50IGltcGxlbWVudHMgVXBkYXRpbmdPcGNvZGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbm9kZTogU2ltcGxlVGV4dCxcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPHVua25vd24+LFxuICAgIHByaXZhdGUgbGFzdFZhbHVlOiBzdHJpbmdcbiAgKSB7fVxuXG4gIGV2YWx1YXRlKCkge1xuICAgIGxldCB2YWx1ZSA9IHZhbHVlRm9yUmVmKHRoaXMucmVmZXJlbmNlKTtcblxuICAgIGxldCB7IGxhc3RWYWx1ZSB9ID0gdGhpcztcblxuICAgIGlmICh2YWx1ZSA9PT0gbGFzdFZhbHVlKSByZXR1cm47XG5cbiAgICBsZXQgbm9ybWFsaXplZDogc3RyaW5nO1xuXG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICBub3JtYWxpemVkID0gJyc7XG4gICAgfSBlbHNlIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgIG5vcm1hbGl6ZWQgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9ybWFsaXplZCA9IFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWQgIT09IGxhc3RWYWx1ZSkge1xuICAgICAgbGV0IHRleHROb2RlID0gdGhpcy5ub2RlO1xuICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gdGhpcy5sYXN0VmFsdWUgPSBub3JtYWxpemVkO1xuICAgIH1cbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==