@glimmer/runtime
Version:
Minimal runtime needed to render Glimmer templates
44 lines (33 loc) • 3.69 kB
JavaScript
import { createComputeRef } from '@glimmer/reference';
import { reifyPositional } from '@glimmer/runtime';
import { internalHelper } from './internal-helper';
var isEmpty = function isEmpty(value) {
return value === null || value === undefined || typeof value.toString !== 'function';
};
var normalizeTextValue = function normalizeTextValue(value) {
if (isEmpty(value)) {
return '';
}
return String(value);
};
/**
Concatenates the given arguments into a string.
Example:
```handlebars
{{some-component name=(concat firstName " " lastName)}}
{{! would pass name="<first name value> <last name value>" to the component}}
```
or for angle bracket invocation, you actually don't need concat at all.
```handlebars
<SomeComponent @name="{{firstName}} {{lastName}}" />
```
@public
@method concat
*/
export default internalHelper(function (_ref) {
var positional = _ref.positional;
return createComputeRef(function () {
return reifyPositional(positional).map(normalizeTextValue).join('');
}, null, 'concat');
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2hlbHBlcnMvY29uY2F0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFNBQUEsZ0JBQUEsUUFBQSxvQkFBQTtBQUNBLFNBQUEsZUFBQSxRQUFBLGtCQUFBO0FBQ0EsU0FBQSxjQUFBLFFBQUEsbUJBQUE7O0FBRUEsSUFBTSxPQUFPLEdBQUksU0FBWCxPQUFXLENBQUEsS0FBRCxFQUE0QjtBQUMxQyxTQUFPLEtBQUssS0FBTCxJQUFBLElBQWtCLEtBQUssS0FBdkIsU0FBQSxJQUF5QyxPQUFRLEtBQWdCLENBQXhCLFFBQUEsS0FBaEQsVUFBQTtBQURGLENBQUE7O0FBSUEsSUFBTSxrQkFBa0IsR0FBSSxTQUF0QixrQkFBc0IsQ0FBQSxLQUFELEVBQTJCO0FBQ3BELE1BQUksT0FBTyxDQUFYLEtBQVcsQ0FBWCxFQUFvQjtBQUNsQixXQUFBLEVBQUE7QUFDRDs7QUFDRCxTQUFPLE1BQU0sQ0FBYixLQUFhLENBQWI7QUFKRixDQUFBO0FBT0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkEsZUFBZSxjQUFjLENBQUMsZ0JBQXNDO0FBQUEsTUFBbkMsVUFBbUMsUUFBbkMsVUFBbUM7QUFDbEUsU0FBTyxnQkFBZ0IsQ0FDckI7QUFBQSxXQUFNLGVBQWUsQ0FBZixVQUFlLENBQWYsQ0FBQSxHQUFBLENBQUEsa0JBQUEsRUFBQSxJQUFBLENBRGUsRUFDZixDQUFOO0FBQUEsR0FEcUIsRUFBQSxJQUFBLEVBQXZCLFFBQXVCLENBQXZCO0FBREYsQ0FBNkIsQ0FBN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXB0dXJlZEFyZ3VtZW50cyB9IGZyb20gJ0BnbGltbWVyL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY3JlYXRlQ29tcHV0ZVJlZiB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyByZWlmeVBvc2l0aW9uYWwgfSBmcm9tICdAZ2xpbW1lci9ydW50aW1lJztcbmltcG9ydCB7IGludGVybmFsSGVscGVyIH0gZnJvbSAnLi9pbnRlcm5hbC1oZWxwZXInO1xuXG5jb25zdCBpc0VtcHR5ID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiAodmFsdWUgYXMgb2JqZWN0KS50b1N0cmluZyAhPT0gJ2Z1bmN0aW9uJztcbn07XG5cbmNvbnN0IG5vcm1hbGl6ZVRleHRWYWx1ZSA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn07XG5cbi8qKlxuICBDb25jYXRlbmF0ZXMgdGhlIGdpdmVuIGFyZ3VtZW50cyBpbnRvIGEgc3RyaW5nLlxuXG4gIEV4YW1wbGU6XG5cbiAgYGBgaGFuZGxlYmFyc1xuICB7e3NvbWUtY29tcG9uZW50IG5hbWU9KGNvbmNhdCBmaXJzdE5hbWUgXCIgXCIgbGFzdE5hbWUpfX1cblxuICB7eyEgd291bGQgcGFzcyBuYW1lPVwiPGZpcnN0IG5hbWUgdmFsdWU+IDxsYXN0IG5hbWUgdmFsdWU+XCIgdG8gdGhlIGNvbXBvbmVudH19XG4gIGBgYFxuXG4gIG9yIGZvciBhbmdsZSBicmFja2V0IGludm9jYXRpb24sIHlvdSBhY3R1YWxseSBkb24ndCBuZWVkIGNvbmNhdCBhdCBhbGwuXG5cbiAgYGBgaGFuZGxlYmFyc1xuICA8U29tZUNvbXBvbmVudCBAbmFtZT1cInt7Zmlyc3ROYW1lfX0ge3tsYXN0TmFtZX19XCIgLz5cbiAgYGBgXG5cbiAgQHB1YmxpY1xuICBAbWV0aG9kIGNvbmNhdFxuKi9cbmV4cG9ydCBkZWZhdWx0IGludGVybmFsSGVscGVyKCh7IHBvc2l0aW9uYWwgfTogQ2FwdHVyZWRBcmd1bWVudHMpID0+IHtcbiAgcmV0dXJuIGNyZWF0ZUNvbXB1dGVSZWYoXG4gICAgKCkgPT4gcmVpZnlQb3NpdGlvbmFsKHBvc2l0aW9uYWwpLm1hcChub3JtYWxpemVUZXh0VmFsdWUpLmpvaW4oJycpLFxuICAgIG51bGwsXG4gICAgJ2NvbmNhdCdcbiAgKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==