@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
29 lines (23 loc) • 2.75 kB
JavaScript
import { valueForRef, createComputeRef } from '@glimmer/reference';
export function createConcatRef(partsRefs) {
return createComputeRef(() => {
let parts = new Array();
for (let i = 0; i < partsRefs.length; i++) {
let value = valueForRef(partsRefs[i]);
if (value !== null && value !== undefined) {
parts[i] = castToString(value);
}
}
if (parts.length > 0) {
return parts.join('');
}
return null;
});
}
function castToString(value) {
if (typeof value.toString !== 'function') {
return '';
}
return String(value);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL2V4cHJlc3Npb25zL2NvbmNhdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFvQixXQUFwQixFQUFpQyxnQkFBakMsUUFBeUQsb0JBQXpEO0FBRUEsT0FBTSxTQUFVLGVBQVYsQ0FBMEIsU0FBMUIsRUFBZ0Q7QUFDcEQsU0FBTyxnQkFBZ0IsQ0FBQyxNQUFLO0FBQzNCLFFBQUksS0FBSyxHQUFHLElBQUksS0FBSixFQUFaOztBQUVBLFNBQUssSUFBSSxDQUFDLEdBQUcsQ0FBYixFQUFnQixDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQTlCLEVBQXNDLENBQUMsRUFBdkMsRUFBMkM7QUFDekMsVUFBSSxLQUFLLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFELENBQVYsQ0FBdkI7O0FBRUEsVUFBSSxLQUFLLEtBQUssSUFBVixJQUFrQixLQUFLLEtBQUssU0FBaEMsRUFBMkM7QUFDekMsUUFBQSxLQUFLLENBQUMsQ0FBRCxDQUFMLEdBQVcsWUFBWSxDQUFDLEtBQUQsQ0FBdkI7QUFDRDtBQUNGOztBQUVELFFBQUksS0FBSyxDQUFDLE1BQU4sR0FBZSxDQUFuQixFQUFzQjtBQUNwQixhQUFPLEtBQUssQ0FBQyxJQUFOLENBQVcsRUFBWCxDQUFQO0FBQ0Q7O0FBRUQsV0FBTyxJQUFQO0FBQ0QsR0FoQnNCLENBQXZCO0FBaUJEOztBQUVELFNBQVMsWUFBVCxDQUFzQixLQUF0QixFQUFpQztBQUMvQixNQUFJLE9BQU8sS0FBSyxDQUFDLFFBQWIsS0FBMEIsVUFBOUIsRUFBMEM7QUFDeEMsV0FBTyxFQUFQO0FBQ0Q7O0FBRUQsU0FBTyxNQUFNLENBQUMsS0FBRCxDQUFiO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaWN0LCBNYXliZSB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCB2YWx1ZUZvclJlZiwgY3JlYXRlQ29tcHV0ZVJlZiB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb25jYXRSZWYocGFydHNSZWZzOiBSZWZlcmVuY2VbXSkge1xuICByZXR1cm4gY3JlYXRlQ29tcHV0ZVJlZigoKSA9PiB7XG4gICAgbGV0IHBhcnRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHNSZWZzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgdmFsdWUgPSB2YWx1ZUZvclJlZihwYXJ0c1JlZnNbaV0pIGFzIE1heWJlPERpY3Q+O1xuXG4gICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXJ0c1tpXSA9IGNhc3RUb1N0cmluZyh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNhc3RUb1N0cmluZyh2YWx1ZTogRGljdCkge1xuICBpZiAodHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9