UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

153 lines (129 loc) 13.4 kB
"use strict"; var _reference = require("@glimmer/reference"); var _util = require("@glimmer/util"); var _opcodes = require("../../opcodes"); var _normalize = require("../../dom/normalize"); var _text = _interopRequireDefault(require("../../vm/content/text")); var _vm = require("./vm"); var _manager = require("@glimmer/manager"); var _env = require("@glimmer/env"); var _curriedValue = require("../../curried-value"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function toContentType(value) { if ((0, _normalize.shouldCoerce)(value)) { return 2 /* String */ ; } else if ((0, _curriedValue.isCurriedType)(value, 0 /* Component */ ) || (0, _manager.hasInternalComponentManager)(value)) { return 0 /* Component */ ; } else if ((0, _curriedValue.isCurriedType)(value, 1 /* Helper */ ) || (0, _manager.hasInternalHelperManager)(value)) { return 1 /* Helper */ ; } else if ((0, _normalize.isSafeString)(value)) { return 4 /* SafeString */ ; } else if ((0, _normalize.isFragment)(value)) { return 5 /* Fragment */ ; } else if ((0, _normalize.isNode)(value)) { return 6 /* Node */ ; } else { return 2 /* String */ ; } } function toDynamicContentType(value) { if (!(0, _util.isObject)(value)) { return 2 /* String */ ; } if ((0, _curriedValue.isCurriedType)(value, 0 /* Component */ ) || (0, _manager.hasInternalComponentManager)(value)) { return 0 /* Component */ ; } else { if (_env.DEBUG && !(0, _curriedValue.isCurriedType)(value, 1 /* Helper */ ) && !(0, _manager.hasInternalHelperManager)(value)) { throw new Error(`Attempted use a dynamic value as a component or helper, but that value did not have an associated component or helper manager. The value was: ${value}`); } return 1 /* Helper */ ; } } _opcodes.APPEND_OPCODES.add(76 /* ContentType */ , vm => { let reference = vm.stack.peek(); vm.stack.push(toContentType((0, _reference.valueForRef)(reference))); if (!(0, _reference.isConstRef)(reference)) { vm.updateWith(new _vm.AssertFilter(reference, toContentType)); } }); _opcodes.APPEND_OPCODES.add(106 /* DynamicContentType */ , vm => { let reference = vm.stack.peek(); vm.stack.push(toDynamicContentType((0, _reference.valueForRef)(reference))); if (!(0, _reference.isConstRef)(reference)) { vm.updateWith(new _vm.AssertFilter(reference, toDynamicContentType)); } }); _opcodes.APPEND_OPCODES.add(43 /* AppendHTML */ , vm => { let reference = vm.stack.pop(); let rawValue = (0, _reference.valueForRef)(reference); let value = (0, _normalize.isEmpty)(rawValue) ? '' : String(rawValue); vm.elements().appendDynamicHTML(value); }); _opcodes.APPEND_OPCODES.add(44 /* AppendSafeHTML */ , vm => { let reference = vm.stack.pop(); let rawValue = (0, _reference.valueForRef)(reference).toHTML(); let value = (0, _normalize.isEmpty)(rawValue) ? '' : rawValue; vm.elements().appendDynamicHTML(value); }); _opcodes.APPEND_OPCODES.add(47 /* AppendText */ , vm => { let reference = vm.stack.pop(); let rawValue = (0, _reference.valueForRef)(reference); let value = (0, _normalize.isEmpty)(rawValue) ? '' : String(rawValue); let node = vm.elements().appendDynamicText(value); if (!(0, _reference.isConstRef)(reference)) { vm.updateWith(new _text.default(node, reference, value)); } }); _opcodes.APPEND_OPCODES.add(45 /* AppendDocumentFragment */ , vm => { let reference = vm.stack.pop(); let value = (0, _reference.valueForRef)(reference); vm.elements().appendDynamicFragment(value); }); _opcodes.APPEND_OPCODES.add(46 /* AppendNode */ , vm => { let reference = vm.stack.pop(); let value = (0, _reference.valueForRef)(reference); vm.elements().appendDynamicNode(value); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3J1bnRpbWUvbGliL2NvbXBpbGVkL29wY29kZXMvY29udGVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOztBQVFBOztBQUVBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUEsU0FBQSxhQUFBLENBQUEsS0FBQSxFQUFxQztBQUNuQyxNQUFJLDZCQUFKLEtBQUksQ0FBSixFQUF5QjtBQUN2QixXQUFBO0FBQUE7QUFBQTtBQURGLEdBQUEsTUFFTyxJQUNMLGlDQUFhLEtBQWIsRUFBbUI7QUFBQTtBQUFuQixPQUNBLDBDQUZLLEtBRUwsQ0FGSyxFQUdMO0FBQ0EsV0FBQTtBQUFBO0FBQUE7QUFKSyxHQUFBLE1BS0EsSUFDTCxpQ0FBYSxLQUFiLEVBQW1CO0FBQUE7QUFBbkIsT0FDQSx1Q0FGSyxLQUVMLENBRkssRUFHTDtBQUNBLFdBQUE7QUFBQTtBQUFBO0FBSkssR0FBQSxNQUtBLElBQUksNkJBQUosS0FBSSxDQUFKLEVBQXlCO0FBQzlCLFdBQUE7QUFBQTtBQUFBO0FBREssR0FBQSxNQUVBLElBQUksMkJBQUosS0FBSSxDQUFKLEVBQXVCO0FBQzVCLFdBQUE7QUFBQTtBQUFBO0FBREssR0FBQSxNQUVBLElBQUksdUJBQUosS0FBSSxDQUFKLEVBQW1CO0FBQ3hCLFdBQUE7QUFBQTtBQUFBO0FBREssR0FBQSxNQUVBO0FBQ0wsYUFBQTtBQUFBO0FBQUE7QUFDRDtBQUNGOztBQUVELFNBQUEsb0JBQUEsQ0FBQSxLQUFBLEVBQTRDO0FBQzFDLE1BQUksQ0FBQyxvQkFBTCxLQUFLLENBQUwsRUFBc0I7QUFDcEIsV0FBQTtBQUFBO0FBQUE7QUFDRDs7QUFFRCxNQUFJLGlDQUFhLEtBQWIsRUFBbUI7QUFBQTtBQUFuQixPQUErQywwQ0FBbkQsS0FBbUQsQ0FBbkQsRUFBaUc7QUFDL0YsV0FBQTtBQUFBO0FBQUE7QUFERixHQUFBLE1BRU87QUFDTCxR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LEtBQUssR0FBUyw0QkFBbEIsU0FBa0IsQ0FBbEI7QUFFQSxFQUFBLEVBQUUsQ0FBRixRQUFBLEdBQUEscUJBQUEsQ0FBQSxLQUFBO0FBTEYsQ0FBQTs7QUFRQSx3QkFBQSxHQUFBLENBQWtCO0FBQUE7QUFBbEIsRUFBbUMsRUFBRCxJQUFPO0FBQ3ZDLE1BQUksU0FBUyxHQUFTLEVBQUUsQ0FBRixLQUFBLENBQXRCLEdBQXNCLEVBQXRCO0FBRUEsTUFBSSxLQUFLLEdBQVMsNEJBQWxCLFNBQWtCLENBQWxCO0FBRUEsRUFBQSxFQUFFLENBQUYsUUFBQSxHQUFBLGlCQUFBLENBQUEsS0FBQTtBQUxGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0NvbnN0UmVmLCB2YWx1ZUZvclJlZiB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQge1xuICBjaGVjayxcbiAgQ2hlY2tTdHJpbmcsXG4gIENoZWNrU2FmZVN0cmluZyxcbiAgQ2hlY2tOb2RlLFxuICBDaGVja0RvY3VtZW50RnJhZ21lbnQsXG59IGZyb20gJ0BnbGltbWVyL2RlYnVnJztcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbmltcG9ydCB7IEFQUEVORF9PUENPREVTIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDaGVja1JlZmVyZW5jZSB9IGZyb20gJy4vLWRlYnVnLXN0cmlwJztcbmltcG9ydCB7IGlzRW1wdHksIGlzU2FmZVN0cmluZywgaXNGcmFnbWVudCwgaXNOb2RlLCBzaG91bGRDb2VyY2UgfSBmcm9tICcuLi8uLi9kb20vbm9ybWFsaXplJztcbmltcG9ydCBEeW5hbWljVGV4dENvbnRlbnQgZnJvbSAnLi4vLi4vdm0vY29udGVudC90ZXh0JztcbmltcG9ydCB7IENvbnRlbnRUeXBlLCBDdXJyaWVkVHlwZSwgT3AgfSBmcm9tICdAZ2xpbW1lci9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFzc2VydEZpbHRlciB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgaGFzSW50ZXJuYWxDb21wb25lbnRNYW5hZ2VyLCBoYXNJbnRlcm5hbEhlbHBlck1hbmFnZXIgfSBmcm9tICdAZ2xpbW1lci9tYW5hZ2VyJztcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcbmltcG9ydCB7IGlzQ3VycmllZFR5cGUgfSBmcm9tICcuLi8uLi9jdXJyaWVkLXZhbHVlJztcblxuZnVuY3Rpb24gdG9Db250ZW50VHlwZSh2YWx1ZTogdW5rbm93bikge1xuICBpZiAoc2hvdWxkQ29lcmNlKHZhbHVlKSkge1xuICAgIHJldHVybiBDb250ZW50VHlwZS5TdHJpbmc7XG4gIH0gZWxzZSBpZiAoXG4gICAgaXNDdXJyaWVkVHlwZSh2YWx1ZSwgQ3VycmllZFR5cGUuQ29tcG9uZW50KSB8fFxuICAgIGhhc0ludGVybmFsQ29tcG9uZW50TWFuYWdlcih2YWx1ZSBhcyBvYmplY3QpXG4gICkge1xuICAgIHJldHVybiBDb250ZW50VHlwZS5Db21wb25lbnQ7XG4gIH0gZWxzZSBpZiAoXG4gICAgaXNDdXJyaWVkVHlwZSh2YWx1ZSwgQ3VycmllZFR5cGUuSGVscGVyKSB8fFxuICAgIGhhc0ludGVybmFsSGVscGVyTWFuYWdlcih2YWx1ZSBhcyBvYmplY3QpXG4gICkge1xuICAgIHJldHVybiBDb250ZW50VHlwZS5IZWxwZXI7XG4gIH0gZWxzZSBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiBDb250ZW50VHlwZS5TYWZlU3RyaW5nO1xuICB9IGVsc2UgaWYgKGlzRnJhZ21lbnQodmFsdWUpKSB7XG4gICAgcmV0dXJuIENvbnRlbnRUeXBlLkZyYWdtZW50O1xuICB9IGVsc2UgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gQ29udGVudFR5cGUuTm9kZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gQ29udGVudFR5cGUuU3RyaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvRHluYW1pY0NvbnRlbnRUeXBlKHZhbHVlOiB1bmtub3duKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIENvbnRlbnRUeXBlLlN0cmluZztcbiAgfVxuXG4gIGlmIChpc0N1cnJpZWRUeXBlKHZhbHVlLCBDdXJyaWVkVHlwZS5Db21wb25lbnQpIHx8IGhhc0ludGVybmFsQ29tcG9uZW50TWFuYWdlcih2YWx1ZSBhcyBvYmplY3QpKSB7XG4gICAgcmV0dXJuIENvbnRlbnRUeXBlLkNvbXBvbmVudDtcbiAgfSBlbHNlIHtcbiAgICBpZiAoXG4gICAgICBERUJVRyAmJlxuICAgICAgIWlzQ3VycmllZFR5cGUodmFsdWUsIEN1cnJpZWRUeXBlLkhlbHBlcikgJiZcbiAgICAgICFoYXNJbnRlcm5hbEhlbHBlck1hbmFnZXIodmFsdWUgYXMgb2JqZWN0KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQXR0ZW1wdGVkIHVzZSBhIGR5bmFtaWMgdmFsdWUgYXMgYSBjb21wb25lbnQgb3IgaGVscGVyLCBidXQgdGhhdCB2YWx1ZSBkaWQgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBjb21wb25lbnQgb3IgaGVscGVyIG1hbmFnZXIuIFRoZSB2YWx1ZSB3YXM6ICR7dmFsdWV9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQ29udGVudFR5cGUuSGVscGVyO1xuICB9XG59XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5Db250ZW50VHlwZSwgKHZtKSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSBjaGVjayh2bS5zdGFjay5wZWVrKCksIENoZWNrUmVmZXJlbmNlKTtcblxuICB2bS5zdGFjay5wdXNoKHRvQ29udGVudFR5cGUodmFsdWVGb3JSZWYocmVmZXJlbmNlKSkpO1xuXG4gIGlmICghaXNDb25zdFJlZihyZWZlcmVuY2UpKSB7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0RmlsdGVyKHJlZmVyZW5jZSwgdG9Db250ZW50VHlwZSkpO1xuICB9XG59KTtcblxuQVBQRU5EX09QQ09ERVMuYWRkKE9wLkR5bmFtaWNDb250ZW50VHlwZSwgKHZtKSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSBjaGVjayh2bS5zdGFjay5wZWVrKCksIENoZWNrUmVmZXJlbmNlKTtcblxuICB2bS5zdGFjay5wdXNoKHRvRHluYW1pY0NvbnRlbnRUeXBlKHZhbHVlRm9yUmVmKHJlZmVyZW5jZSkpKTtcblxuICBpZiAoIWlzQ29uc3RSZWYocmVmZXJlbmNlKSkge1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydEZpbHRlcihyZWZlcmVuY2UsIHRvRHluYW1pY0NvbnRlbnRUeXBlKSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQXBwZW5kSFRNTCwgKHZtKSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tSZWZlcmVuY2UpO1xuXG4gIGxldCByYXdWYWx1ZSA9IHZhbHVlRm9yUmVmKHJlZmVyZW5jZSk7XG4gIGxldCB2YWx1ZSA9IGlzRW1wdHkocmF3VmFsdWUpID8gJycgOiBTdHJpbmcocmF3VmFsdWUpO1xuXG4gIHZtLmVsZW1lbnRzKCkuYXBwZW5kRHluYW1pY0hUTUwodmFsdWUpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5BcHBlbmRTYWZlSFRNTCwgKHZtKSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tSZWZlcmVuY2UpO1xuXG4gIGxldCByYXdWYWx1ZSA9IGNoZWNrKHZhbHVlRm9yUmVmKHJlZmVyZW5jZSksIENoZWNrU2FmZVN0cmluZykudG9IVE1MKCk7XG4gIGxldCB2YWx1ZSA9IGlzRW1wdHkocmF3VmFsdWUpID8gJycgOiBjaGVjayhyYXdWYWx1ZSwgQ2hlY2tTdHJpbmcpO1xuXG4gIHZtLmVsZW1lbnRzKCkuYXBwZW5kRHluYW1pY0hUTUwodmFsdWUpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5BcHBlbmRUZXh0LCAodm0pID0+IHtcbiAgbGV0IHJlZmVyZW5jZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1JlZmVyZW5jZSk7XG5cbiAgbGV0IHJhd1ZhbHVlID0gdmFsdWVGb3JSZWYocmVmZXJlbmNlKTtcbiAgbGV0IHZhbHVlID0gaXNFbXB0eShyYXdWYWx1ZSkgPyAnJyA6IFN0cmluZyhyYXdWYWx1ZSk7XG5cbiAgbGV0IG5vZGUgPSB2bS5lbGVtZW50cygpLmFwcGVuZER5bmFtaWNUZXh0KHZhbHVlKTtcblxuICBpZiAoIWlzQ29uc3RSZWYocmVmZXJlbmNlKSkge1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IER5bmFtaWNUZXh0Q29udGVudChub2RlLCByZWZlcmVuY2UsIHZhbHVlKSk7XG4gIH1cbn0pO1xuXG5BUFBFTkRfT1BDT0RFUy5hZGQoT3AuQXBwZW5kRG9jdW1lbnRGcmFnbWVudCwgKHZtKSA9PiB7XG4gIGxldCByZWZlcmVuY2UgPSBjaGVjayh2bS5zdGFjay5wb3AoKSwgQ2hlY2tSZWZlcmVuY2UpO1xuXG4gIGxldCB2YWx1ZSA9IGNoZWNrKHZhbHVlRm9yUmVmKHJlZmVyZW5jZSksIENoZWNrRG9jdW1lbnRGcmFnbWVudCk7XG5cbiAgdm0uZWxlbWVudHMoKS5hcHBlbmREeW5hbWljRnJhZ21lbnQodmFsdWUpO1xufSk7XG5cbkFQUEVORF9PUENPREVTLmFkZChPcC5BcHBlbmROb2RlLCAodm0pID0+IHtcbiAgbGV0IHJlZmVyZW5jZSA9IGNoZWNrKHZtLnN0YWNrLnBvcCgpLCBDaGVja1JlZmVyZW5jZSk7XG5cbiAgbGV0IHZhbHVlID0gY2hlY2sodmFsdWVGb3JSZWYocmVmZXJlbmNlKSwgQ2hlY2tOb2RlKTtcblxuICB2bS5lbGVtZW50cygpLmFwcGVuZER5bmFtaWNOb2RlKHZhbHVlKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==