UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

43 lines (32 loc) 3.55 kB
import { createComputeRef } from '@glimmer/reference'; import { reifyPositional } from '@glimmer/runtime'; import { internalHelper } from './internal-helper'; const isEmpty = value => { return value === null || value === undefined || typeof value.toString !== 'function'; }; const 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(({ positional }) => { return createComputeRef(() => reifyPositional(positional).map(normalizeTextValue).join(''), null, 'concat'); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2hlbHBlcnMvY29uY2F0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFNBQVMsZ0JBQVQsUUFBaUMsb0JBQWpDO0FBQ0EsU0FBUyxlQUFULFFBQWdDLGtCQUFoQztBQUNBLFNBQVMsY0FBVCxRQUErQixtQkFBL0I7O0FBRUEsTUFBTSxPQUFPLEdBQUksS0FBRCxJQUE0QjtBQUMxQyxTQUFPLEtBQUssS0FBSyxJQUFWLElBQWtCLEtBQUssS0FBSyxTQUE1QixJQUF5QyxPQUFRLEtBQWdCLENBQUMsUUFBekIsS0FBc0MsVUFBdEY7QUFDRCxDQUZEOztBQUlBLE1BQU0sa0JBQWtCLEdBQUksS0FBRCxJQUEyQjtBQUNwRCxNQUFJLE9BQU8sQ0FBQyxLQUFELENBQVgsRUFBb0I7QUFDbEIsV0FBTyxFQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxNQUFNLENBQUMsS0FBRCxDQUFiO0FBQ0QsQ0FMRDtBQU9BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLGVBQWUsY0FBYyxDQUFDLENBQUM7QUFBRSxFQUFBO0FBQUYsQ0FBRCxLQUFzQztBQUNsRSxTQUFPLGdCQUFnQixDQUNyQixNQUFNLGVBQWUsQ0FBQyxVQUFELENBQWYsQ0FBNEIsR0FBNUIsQ0FBZ0Msa0JBQWhDLEVBQW9ELElBQXBELENBQXlELEVBQXpELENBRGUsRUFFckIsSUFGcUIsRUFHckIsUUFIcUIsQ0FBdkI7QUFLRCxDQU40QixDQUE3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhcHR1cmVkQXJndW1lbnRzIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjcmVhdGVDb21wdXRlUmVmIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IHJlaWZ5UG9zaXRpb25hbCB9IGZyb20gJ0BnbGltbWVyL3J1bnRpbWUnO1xuaW1wb3J0IHsgaW50ZXJuYWxIZWxwZXIgfSBmcm9tICcuL2ludGVybmFsLWhlbHBlcic7XG5cbmNvbnN0IGlzRW1wdHkgPSAodmFsdWU6IHVua25vd24pOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mICh2YWx1ZSBhcyBvYmplY3QpLnRvU3RyaW5nICE9PSAnZnVuY3Rpb24nO1xufTtcblxuY29uc3Qgbm9ybWFsaXplVGV4dFZhbHVlID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufTtcblxuLyoqXG4gIENvbmNhdGVuYXRlcyB0aGUgZ2l2ZW4gYXJndW1lbnRzIGludG8gYSBzdHJpbmcuXG5cbiAgRXhhbXBsZTpcblxuICBgYGBoYW5kbGViYXJzXG4gIHt7c29tZS1jb21wb25lbnQgbmFtZT0oY29uY2F0IGZpcnN0TmFtZSBcIiBcIiBsYXN0TmFtZSl9fVxuXG4gIHt7ISB3b3VsZCBwYXNzIG5hbWU9XCI8Zmlyc3QgbmFtZSB2YWx1ZT4gPGxhc3QgbmFtZSB2YWx1ZT5cIiB0byB0aGUgY29tcG9uZW50fX1cbiAgYGBgXG5cbiAgb3IgZm9yIGFuZ2xlIGJyYWNrZXQgaW52b2NhdGlvbiwgeW91IGFjdHVhbGx5IGRvbid0IG5lZWQgY29uY2F0IGF0IGFsbC5cblxuICBgYGBoYW5kbGViYXJzXG4gIDxTb21lQ29tcG9uZW50IEBuYW1lPVwie3tmaXJzdE5hbWV9fSB7e2xhc3ROYW1lfX1cIiAvPlxuICBgYGBcblxuICBAcHVibGljXG4gIEBtZXRob2QgY29uY2F0XG4qL1xuZXhwb3J0IGRlZmF1bHQgaW50ZXJuYWxIZWxwZXIoKHsgcG9zaXRpb25hbCB9OiBDYXB0dXJlZEFyZ3VtZW50cykgPT4ge1xuICByZXR1cm4gY3JlYXRlQ29tcHV0ZVJlZihcbiAgICAoKSA9PiByZWlmeVBvc2l0aW9uYWwocG9zaXRpb25hbCkubWFwKG5vcm1hbGl6ZVRleHRWYWx1ZSkuam9pbignJyksXG4gICAgbnVsbCxcbiAgICAnY29uY2F0J1xuICApO1xufSk7XG4iXSwic291cmNlUm9vdCI6IiJ9