function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } it = o[Symbol.iterator](); return it.next.bind(it); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function getLocalName(node) { switch (node.type) { case 'ElementNode': // unfortunately the ElementNode stores `tag` as a string // if that changes in glimmer-vm this will need to be updated return node.tag.split('.')[0]; case 'SubExpression': case 'MustacheStatement': case 'BlockStatement': return getLocalName(node.path); case 'UndefinedLiteral': case 'NullLiteral': case 'BooleanLiteral': case 'StringLiteral': case 'NumberLiteral': case 'TextNode': case 'Template': case 'Block': case 'CommentStatement': case 'MustacheCommentStatement': case 'PartialStatement': case 'ElementModifierStatement': case 'AttrNode': case 'ConcatStatement': case 'Program': case 'Hash': case 'HashPair': return undefined; case 'PathExpression': default: return node.parts.length ? node.parts[0] : undefined; } } function getLocals(node) { switch (node.type) { case 'ElementNode': case 'Program': case 'Block': case 'Template': return node.blockParams; case 'BlockStatement': return node.program.blockParams; default: return undefined; } } export var TransformScope = /*#__PURE__*/function () { function TransformScope(locals) { this.locals = locals; this.hasPartial = false; this.usedLocals = {}; for (var _iterator = _createForOfIteratorHelperLoose(locals), _step; !(_step = _iterator()).done;) { var local = _step.value; this.usedLocals[local] = false; } } var _proto = TransformScope.prototype; _proto.child = function child(node) { var locals = getLocals(node); return locals ? new ChildTransformScope(locals, this) : this; }; _proto.usePartial = function usePartial() { this.hasPartial = true; }; return TransformScope; }(); var RootTransformScope = /*#__PURE__*/function (_TransformScope) { _inheritsLoose(RootTransformScope, _TransformScope); function RootTransformScope(node) { var _a; var locals = (_a = getLocals(node)) !== null && _a !== void 0 ? _a : []; return _TransformScope.call(this, locals) || this; } var _proto2 = RootTransformScope.prototype; _proto2.useLocal = function useLocal(node) { var name = getLocalName(node); if (name && name in this.usedLocals) { this.usedLocals[name] = true; } }; _proto2.isLocal = function isLocal(name) { return this.locals.indexOf(name) !== -1; }; _proto2.currentUnusedLocals = function currentUnusedLocals() { var _this = this; if (!this.hasPartial && this.locals.length > 0) { return this.locals.filter(function (local) { return !_this.usedLocals[local]; }); } return false; }; return RootTransformScope; }(TransformScope); export { RootTransformScope as default }; var ChildTransformScope = /*#__PURE__*/function (_TransformScope2) { _inheritsLoose(ChildTransformScope, _TransformScope2); function ChildTransformScope(locals, parent) { var _this2; _this2 = _TransformScope2.call(this, locals) || this; _this2.parent = parent; return _this2; } var _proto3 = ChildTransformScope.prototype; _proto3.useLocal = function useLocal(node) { var name = getLocalName(node); if (name && name in this.usedLocals) { this.usedLocals[name] = true; } else { this.parent.useLocal(node); } }; _proto3.isLocal = function isLocal(name) { return this.locals.indexOf(name) !== -1 || this.parent.isLocal(name); }; _proto3.currentUnusedLocals = function currentUnusedLocals() { if (!this.hasPartial && this.locals.length > 0) { // We only care about the last local, because if it is used then it implies // usage of the others (specifically when in a child block, |foo bar|) if (!this.usedLocals[this.locals[this.locals.length - 1]]) { return [this.locals[this.locals.length - 1]]; } } return false; }; return ChildTransformScope; }(TransformScope); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvdHJhdmVyc2FsL3Njb3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsU0FBQSxZQUFBLENBQUEsSUFBQSxFQUFzQztBQUNwQyxVQUFRLElBQUksQ0FBWixJQUFBO0FBQ0UsU0FBQSxhQUFBO0FBQ0U7QUFDQTtBQUNBLGFBQU8sSUFBSSxDQUFKLEdBQUEsQ0FBQSxLQUFBLENBQUEsR0FBQSxFQUFQLENBQU8sQ0FBUDs7QUFFRixTQUFBLGVBQUE7QUFDQSxTQUFBLG1CQUFBO0FBQ0EsU0FBQSxnQkFBQTtBQUNFLGFBQU8sWUFBWSxDQUFDLElBQUksQ0FBeEIsSUFBbUIsQ0FBbkI7O0FBRUYsU0FBQSxrQkFBQTtBQUNBLFNBQUEsYUFBQTtBQUNBLFNBQUEsZ0JBQUE7QUFDQSxTQUFBLGVBQUE7QUFDQSxTQUFBLGVBQUE7QUFDQSxTQUFBLFVBQUE7QUFDQSxTQUFBLFVBQUE7QUFDQSxTQUFBLE9BQUE7QUFDQSxTQUFBLGtCQUFBO0FBQ0EsU0FBQSwwQkFBQTtBQUNBLFNBQUEsa0JBQUE7QUFDQSxTQUFBLDBCQUFBO0FBQ0EsU0FBQSxVQUFBO0FBQ0EsU0FBQSxpQkFBQTtBQUNBLFNBQUEsU0FBQTtBQUNBLFNBQUEsTUFBQTtBQUNBLFNBQUEsVUFBQTtBQUNFLGFBQUEsU0FBQTs7QUFDRixTQUFBLGdCQUFBO0FBQ0E7QUFDRSxhQUFPLElBQUksQ0FBSixLQUFBLENBQUEsTUFBQSxHQUFvQixJQUFJLENBQUosS0FBQSxDQUFwQixDQUFvQixDQUFwQixHQUFQLFNBQUE7QUEvQko7QUFpQ0Q7O0FBRUQsU0FBQSxTQUFBLENBQUEsSUFBQSxFQUFtQztBQUNqQyxVQUFRLElBQUksQ0FBWixJQUFBO0FBQ0UsU0FBQSxhQUFBO0FBQ0EsU0FBQSxTQUFBO0FBQ0EsU0FBQSxPQUFBO0FBQ0EsU0FBQSxVQUFBO0FBQ0UsYUFBTyxJQUFJLENBQVgsV0FBQTs7QUFFRixT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QUFDLEtBQUEsVUFBQSxDQUFnQixLQUFBLE1BQUEsQ0FBWSxLQUFBLE1BQUEsQ0FBQSxNQUFBLEdBQWpDLENBQXFCLENBQWhCLENBQUwsRUFBMkQ7QUFDekQsZUFBTyxDQUFDLEtBQUEsTUFBQSxDQUFZLEtBQUEsTUFBQSxDQUFBLE1BQUEsR0FBcEIsQ0FBUSxDQUFELENBQVA7QUFDRDtBQUNGOztBQUVELFdBQUEsS0FBQTtBQUNELEc7OztFQTdCSCxjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgQVNUdjEgZnJvbSAnLi4vdjEvYXBpJztcblxuZnVuY3Rpb24gZ2V0TG9jYWxOYW1lKG5vZGU6IEFTVHYxLk5vZGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgIGNhc2UgJ0VsZW1lbnROb2RlJzpcbiAgICAgIC8vIHVuZm9ydHVuYXRlbHkgdGhlIEVsZW1lbnROb2RlIHN0b3JlcyBgdGFnYCBhcyBhIHN0cmluZ1xuICAgICAgLy8gaWYgdGhhdCBjaGFuZ2VzIGluIGdsaW1tZXItdm0gdGhpcyB3aWxsIG5lZWQgdG8gYmUgdXBkYXRlZFxuICAgICAgcmV0dXJuIG5vZGUudGFnLnNwbGl0KCcuJylbMF07XG5cbiAgICBjYXNlICdTdWJFeHByZXNzaW9uJzpcbiAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgY2FzZSAnQmxvY2tTdGF0ZW1lbnQnOlxuICAgICAgcmV0dXJuIGdldExvY2FsTmFtZShub2RlLnBhdGgpO1xuXG4gICAgY2FzZSAnVW5kZWZpbmVkTGl0ZXJhbCc6XG4gICAgY2FzZSAnTnVsbExpdGVyYWwnOlxuICAgIGNhc2UgJ0Jvb2xlYW5MaXRlcmFsJzpcbiAgICBjYXNlICdTdHJpbmdMaXRlcmFsJzpcbiAgICBjYXNlICdOdW1iZXJMaXRlcmFsJzpcbiAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgY2FzZSAnVGVtcGxhdGUnOlxuICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICBjYXNlICdDb21tZW50U3RhdGVtZW50JzpcbiAgICBjYXNlICdNdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnQnOlxuICAgIGNhc2UgJ1BhcnRpYWxTdGF0ZW1lbnQnOlxuICAgIGNhc2UgJ0VsZW1lbnRNb2RpZmllclN0YXRlbWVudCc6XG4gICAgY2FzZSAnQXR0ck5vZGUnOlxuICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgY2FzZSAnUHJvZ3JhbSc6XG4gICAgY2FzZSAnSGFzaCc6XG4gICAgY2FzZSAnSGFzaFBhaXInOlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjYXNlICdQYXRoRXhwcmVzc2lvbic6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBub2RlLnBhcnRzLmxlbmd0aCA/IG5vZGUucGFydHNbMF0gOiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0TG9jYWxzKG5vZGU6IEFTVHYxLk5vZGUpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAobm9kZS50eXBlKSB7XG4gICAgY2FzZSAnRWxlbWVudE5vZGUnOlxuICAgIGNhc2UgJ1Byb2dyYW0nOlxuICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICBjYXNlICdUZW1wbGF0ZSc6XG4gICAgICByZXR1cm4gbm9kZS5ibG9ja1BhcmFtcztcblxuICAgIGNhc2UgJ0Jsb2NrU3RhdGVtZW50JzpcbiAgICAgIHJldHVybiBub2RlLnByb2dyYW0uYmxvY2tQYXJhbXM7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNmb3JtU2NvcGUge1xuICBoYXNQYXJ0aWFsID0gZmFsc2U7XG4gIHVzZWRMb2NhbHM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGxvY2Fsczogc3RyaW5nW10pIHtcbiAgICBmb3IgKGNvbnN0IGxvY2FsIG9mIGxvY2Fscykge1xuICAgICAgdGhpcy51c2VkTG9jYWxzW2xvY2FsXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNoaWxkKG5vZGU6IEFTVHYxLk5vZGUpOiBUcmFuc2Zvcm1TY29wZSB7XG4gICAgbGV0IGxvY2FscyA9IGdldExvY2Fscyhub2RlKTtcblxuICAgIHJldHVybiBsb2NhbHMgPyBuZXcgQ2hpbGRUcmFuc2Zvcm1TY29wZShsb2NhbHMsIHRoaXMpIDogdGhpcztcbiAgfVxuXG4gIHVzZVBhcnRpYWwoKTogdm9pZCB7XG4gICAgdGhpcy5oYXNQYXJ0aWFsID0gdHJ1ZTtcbiAgfVxuXG4gIGFic3RyYWN0IGlzTG9jYWwobmFtZTogc3RyaW5nKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgdXNlTG9jYWwobm9kZTogQVNUdjEuTm9kZSk6IHZvaWQ7XG4gIGFic3RyYWN0IGN1cnJlbnRVbnVzZWRMb2NhbHMoKTogc3RyaW5nW10gfCBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm9vdFRyYW5zZm9ybVNjb3BlIGV4dGVuZHMgVHJhbnNmb3JtU2NvcGUge1xuICBjb25zdHJ1Y3Rvcihub2RlOiBBU1R2MS5Ob2RlKSB7XG4gICAgbGV0IGxvY2FscyA9IGdldExvY2Fscyhub2RlKSA/PyBbXTtcblxuICAgIHN1cGVyKGxvY2Fscyk7XG4gIH1cblxuICB1c2VMb2NhbChub2RlOiBBU1R2MS5Ob2RlKTogdm9pZCB7XG4gICAgbGV0IG5hbWUgPSBnZXRMb2NhbE5hbWUobm9kZSk7XG5cbiAgICBpZiAobmFtZSAmJiBuYW1lIGluIHRoaXMudXNlZExvY2Fscykge1xuICAgICAgdGhpcy51c2VkTG9jYWxzW25hbWVdID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpc0xvY2FsKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvY2Fscy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgfVxuXG4gIGN1cnJlbnRVbnVzZWRMb2NhbHMoKTogc3RyaW5nW10gfCBmYWxzZSB7XG4gICAgaWYgKCF0aGlzLmhhc1BhcnRpYWwgJiYgdGhpcy5sb2NhbHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMubG9jYWxzLmZpbHRlcigobG9jYWwpID0+ICF0aGlzLnVzZWRMb2NhbHNbbG9jYWxdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuY2xhc3MgQ2hpbGRUcmFuc2Zvcm1TY29wZSBleHRlbmRzIFRyYW5zZm9ybVNjb3BlIHtcbiAgY29uc3RydWN0b3IobG9jYWxzOiBzdHJpbmdbXSwgcHJpdmF0ZSBwYXJlbnQ6IFRyYW5zZm9ybVNjb3BlKSB7XG4gICAgc3VwZXIobG9jYWxzKTtcbiAgfVxuXG4gIHVzZUxvY2FsKG5vZGU6IEFTVHYxLk5vZGUpOiB2b2lkIHtcbiAgICBsZXQgbmFtZSA9IGdldExvY2FsTmFtZShub2RlKTtcblxuICAgIGlmIChuYW1lICYmIG5hbWUgaW4gdGhpcy51c2VkTG9jYWxzKSB7XG4gICAgICB0aGlzLnVzZWRMb2NhbHNbbmFtZV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBhcmVudC51c2VMb2NhbChub2RlKTtcbiAgICB9XG4gIH1cblxuICBpc0xvY2FsKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvY2Fscy5pbmRleE9mKG5hbWUpICE9PSAtMSB8fCB0aGlzLnBhcmVudC5pc0xvY2FsKG5hbWUpO1xuICB9XG5cbiAgY3VycmVudFVudXNlZExvY2FscygpOiBzdHJpbmdbXSB8IGZhbHNlIHtcbiAgICBpZiAoIXRoaXMuaGFzUGFydGlhbCAmJiB0aGlzLmxvY2Fscy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgdGhlIGxhc3QgbG9jYWwsIGJlY2F1c2UgaWYgaXQgaXMgdXNlZCB0aGVuIGl0IGltcGxpZXNcbiAgICAgIC8vIHVzYWdlIG9mIHRoZSBvdGhlcnMgKHNwZWNpZmljYWxseSB3aGVuIGluIGEgY2hpbGQgYmxvY2ssIHxmb28gYmFyfClcbiAgICAgIGlmICghdGhpcy51c2VkTG9jYWxzW3RoaXMubG9jYWxzW3RoaXMubG9jYWxzLmxlbmd0aCAtIDFdXSkge1xuICAgICAgICByZXR1cm4gW3RoaXMubG9jYWxzW3RoaXMubG9jYWxzLmxlbmd0aCAtIDFdXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=