UNPKG

ember-legacy-class-transform

Version:
91 lines (75 loc) 10.4 kB
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } import { assign, EMPTY_ARRAY } from '@glimmer/util'; import { ElementStack } from './builder'; import Scanner from './scanner'; import { VM } from './vm'; export var TemplateIterator = function () { function TemplateIterator(vm) { _classCallCheck(this, TemplateIterator); this.vm = vm; } TemplateIterator.prototype.next = function next() { return this.vm.next(); }; return TemplateIterator; }(); var clientId = 0; export default function templateFactory(_ref) { var templateId = _ref.id, meta = _ref.meta, block = _ref.block; var parsedBlock = void 0; var id = templateId || 'client-' + clientId++; var create = function (env, envMeta) { var newMeta = envMeta ? assign({}, envMeta, meta) : meta; if (!parsedBlock) { parsedBlock = JSON.parse(block); } return new ScannableTemplate(id, newMeta, env, parsedBlock); }; return { id: id, meta: meta, create: create }; } var ScannableTemplate = function () { function ScannableTemplate(id, meta, env, rawBlock) { _classCallCheck(this, ScannableTemplate); this.id = id; this.meta = meta; this.env = env; this.entryPoint = null; this.layout = null; this.partial = null; this.block = null; this.scanner = new Scanner(rawBlock, env); this.symbols = rawBlock.symbols; this.hasEval = rawBlock.hasEval; } ScannableTemplate.prototype.render = function render(self, appendTo, dynamicScope) { var env = this.env; var elementStack = ElementStack.forInitialRender(env, appendTo, null); var compiled = this.asEntryPoint().compileDynamic(env); var vm = VM.initial(env, self, dynamicScope, elementStack, compiled); return new TemplateIterator(vm); }; ScannableTemplate.prototype.asEntryPoint = function asEntryPoint() { if (!this.entryPoint) this.entryPoint = this.scanner.scanEntryPoint(this.compilationMeta()); return this.entryPoint; }; ScannableTemplate.prototype.asLayout = function asLayout(componentName, attrs) { if (!this.layout) this.layout = this.scanner.scanLayout(this.compilationMeta(), attrs || EMPTY_ARRAY, componentName); return this.layout; }; ScannableTemplate.prototype.asPartial = function asPartial() { if (!this.partial) this.partial = this.scanner.scanEntryPoint(this.compilationMeta(true)); return this.partial; }; ScannableTemplate.prototype.asBlock = function asBlock() { if (!this.block) this.block = this.scanner.scanBlock(this.compilationMeta()); return this.block; }; ScannableTemplate.prototype.compilationMeta = function compilationMeta() { var asPartial = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; return { templateMeta: this.meta, symbols: this.symbols, asPartial: asPartial }; }; return ScannableTemplate; }(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90ZW1wbGF0ZS5qcyJdLCJuYW1lcyI6WyJhc3NpZ24iLCJFTVBUWV9BUlJBWSIsIkVsZW1lbnRTdGFjayIsIlNjYW5uZXIiLCJWTSIsIlRlbXBsYXRlSXRlcmF0b3IiLCJ2bSIsIm5leHQiLCJjbGllbnRJZCIsInRlbXBsYXRlRmFjdG9yeSIsInRlbXBsYXRlSWQiLCJpZCIsIm1ldGEiLCJibG9jayIsInBhcnNlZEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZW52TWV0YSIsIm5ld01ldGEiLCJKU09OIiwicGFyc2UiLCJTY2FubmFibGVUZW1wbGF0ZSIsInJhd0Jsb2NrIiwiZW50cnlQb2ludCIsImxheW91dCIsInBhcnRpYWwiLCJzY2FubmVyIiwic3ltYm9scyIsImhhc0V2YWwiLCJyZW5kZXIiLCJzZWxmIiwiYXBwZW5kVG8iLCJkeW5hbWljU2NvcGUiLCJlbGVtZW50U3RhY2siLCJmb3JJbml0aWFsUmVuZGVyIiwiY29tcGlsZWQiLCJhc0VudHJ5UG9pbnQiLCJjb21waWxlRHluYW1pYyIsImluaXRpYWwiLCJzY2FuRW50cnlQb2ludCIsImNvbXBpbGF0aW9uTWV0YSIsImFzTGF5b3V0IiwiY29tcG9uZW50TmFtZSIsImF0dHJzIiwic2NhbkxheW91dCIsImFzUGFydGlhbCIsImFzQmxvY2siLCJzY2FuQmxvY2siLCJ0ZW1wbGF0ZU1ldGEiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsTUFBVCxFQUFpQkMsV0FBakIsUUFBb0MsZUFBcEM7QUFDQSxTQUFTQyxZQUFULFFBQTZCLFdBQTdCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixXQUFwQjtBQUNBLFNBQVNDLEVBQVQsUUFBbUIsTUFBbkI7QUFDQSxXQUFhQyxnQkFBYjtBQUNJLDhCQUFZQyxFQUFaLEVBQWdCO0FBQUE7O0FBQ1osYUFBS0EsRUFBTCxHQUFVQSxFQUFWO0FBQ0g7O0FBSEwsK0JBSUlDLElBSkosbUJBSVc7QUFDSCxlQUFPLEtBQUtELEVBQUwsQ0FBUUMsSUFBUixFQUFQO0FBQ0gs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QUFDSCxLOztnQ0FDRHFCLE8sc0JBQVU7QUFDTixZQUFJLENBQUMsS0FBS2pDLEtBQVYsRUFBaUIsS0FBS0EsS0FBTCxHQUFhLEtBQUthLE9BQUwsQ0FBYXFCLFNBQWIsQ0FBdUIsS0FBS1AsZUFBTCxFQUF2QixDQUFiO0FBQ2pCLGVBQU8sS0FBSzNCLEtBQVo7QUFDSCxLOztnQ0FDRDJCLGUsOEJBQW1DO0FBQUEsWUFBbkJLLFNBQW1CLHVFQUFQLEtBQU87O0FBQy9CLGVBQU8sRUFBRUcsY0FBYyxLQUFLcEMsSUFBckIsRUFBMkJlLFNBQVMsS0FBS0EsT0FBekMsRUFBa0RrQixvQkFBbEQsRUFBUDtBQUNILEsiLCJmaWxlIjoibGliL3RlbXBsYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzaWduLCBFTVBUWV9BUlJBWSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgRWxlbWVudFN0YWNrIH0gZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCBTY2FubmVyIGZyb20gJy4vc2Nhbm5lcic7XG5pbXBvcnQgeyBWTSB9IGZyb20gJy4vdm0nO1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlSXRlcmF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKHZtKSB7XG4gICAgICAgIHRoaXMudm0gPSB2bTtcbiAgICB9XG4gICAgbmV4dCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudm0ubmV4dCgpO1xuICAgIH1cbn1cbmxldCBjbGllbnRJZCA9IDA7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0ZW1wbGF0ZUZhY3RvcnkoeyBpZDogdGVtcGxhdGVJZCwgbWV0YSwgYmxvY2sgfSkge1xuICAgIGxldCBwYXJzZWRCbG9jaztcbiAgICBsZXQgaWQgPSB0ZW1wbGF0ZUlkIHx8IGBjbGllbnQtJHtjbGllbnRJZCsrfWA7XG4gICAgbGV0IGNyZWF0ZSA9IChlbnYsIGVudk1ldGEpID0+IHtcbiAgICAgICAgbGV0IG5ld01ldGEgPSBlbnZNZXRhID8gYXNzaWduKHt9LCBlbnZNZXRhLCBtZXRhKSA6IG1ldGE7XG4gICAgICAgIGlmICghcGFyc2VkQmxvY2spIHtcbiAgICAgICAgICAgIHBhcnNlZEJsb2NrID0gSlNPTi5wYXJzZShibG9jayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBTY2FubmFibGVUZW1wbGF0ZShpZCwgbmV3TWV0YSwgZW52LCBwYXJzZWRCbG9jayk7XG4gICAgfTtcbiAgICByZXR1cm4geyBpZCwgbWV0YSwgY3JlYXRlIH07XG59XG5jbGFzcyBTY2FubmFibGVUZW1wbGF0ZSB7XG4gICAgY29uc3RydWN0b3IoaWQsIG1ldGEsIGVudiwgcmF3QmxvY2spIHtcbiAgICAgICAgdGhpcy5pZCA9IGlkO1xuICAgICAgICB0aGlzLm1ldGEgPSBtZXRhO1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5lbnRyeVBvaW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5sYXlvdXQgPSBudWxsO1xuICAgICAgICB0aGlzLnBhcnRpYWwgPSBudWxsO1xuICAgICAgICB0aGlzLmJsb2NrID0gbnVsbDtcbiAgICAgICAgdGhpcy5zY2FubmVyID0gbmV3IFNjYW5uZXIocmF3QmxvY2ssIGVudik7XG4gICAgICAgIHRoaXMuc3ltYm9scyA9IHJhd0Jsb2NrLnN5bWJvbHM7XG4gICAgICAgIHRoaXMuaGFzRXZhbCA9IHJhd0Jsb2NrLmhhc0V2YWw7XG4gICAgfVxuICAgIHJlbmRlcihzZWxmLCBhcHBlbmRUbywgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIGxldCB7IGVudiB9ID0gdGhpcztcbiAgICAgICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5mb3JJbml0aWFsUmVuZGVyKGVudiwgYXBwZW5kVG8sIG51bGwpO1xuICAgICAgICBsZXQgY29tcGlsZWQgPSB0aGlzLmFzRW50cnlQb2ludCgpLmNvbXBpbGVEeW5hbWljKGVudik7XG4gICAgICAgIGxldCB2bSA9IFZNLmluaXRpYWwoZW52LCBzZWxmLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjaywgY29tcGlsZWQpO1xuICAgICAgICByZXR1cm4gbmV3IFRlbXBsYXRlSXRlcmF0b3Iodm0pO1xuICAgIH1cbiAgICBhc0VudHJ5UG9pbnQoKSB7XG4gICAgICAgIGlmICghdGhpcy5lbnRyeVBvaW50KSB0aGlzLmVudHJ5UG9pbnQgPSB0aGlzLnNjYW5uZXIuc2NhbkVudHJ5UG9pbnQodGhpcy5jb21waWxhdGlvbk1ldGEoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJ5UG9pbnQ7XG4gICAgfVxuICAgIGFzTGF5b3V0KGNvbXBvbmVudE5hbWUsIGF0dHJzKSB7XG4gICAgICAgIGlmICghdGhpcy5sYXlvdXQpIHRoaXMubGF5b3V0ID0gdGhpcy5zY2FubmVyLnNjYW5MYXlvdXQodGhpcy5jb21waWxhdGlvbk1ldGEoKSwgYXR0cnMgfHwgRU1QVFlfQVJSQVksIGNvbXBvbmVudE5hbWUpO1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQ7XG4gICAgfVxuICAgIGFzUGFydGlhbCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcnRpYWwpIHRoaXMucGFydGlhbCA9IHRoaXMuc2Nhbm5lci5zY2FuRW50cnlQb2ludCh0aGlzLmNvbXBpbGF0aW9uTWV0YSh0cnVlKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnRpYWw7XG4gICAgfVxuICAgIGFzQmxvY2soKSB7XG4gICAgICAgIGlmICghdGhpcy5ibG9jaykgdGhpcy5ibG9jayA9IHRoaXMuc2Nhbm5lci5zY2FuQmxvY2sodGhpcy5jb21waWxhdGlvbk1ldGEoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2NrO1xuICAgIH1cbiAgICBjb21waWxhdGlvbk1ldGEoYXNQYXJ0aWFsID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHsgdGVtcGxhdGVNZXRhOiB0aGlzLm1ldGEsIHN5bWJvbHM6IHRoaXMuc3ltYm9scywgYXNQYXJ0aWFsIH07XG4gICAgfVxufSJdfQ==