@glimmer/compiler
Version:
60 lines (48 loc) • 5.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ClassifiedComponent = void 0;
var mir = _interopRequireWildcard(require("../../../2-encoding/mir"));
var _expressions = require("../expressions");
var _statements = require("../statements");
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
class ClassifiedComponent {
constructor(tag, element) {
this.tag = tag;
this.element = element;
this.dynamicFeatures = true;
}
arg(attr, {
state
}) {
let name = attr.name;
return _expressions.VISIT_EXPRS.visit((0, _expressions.convertPathToCallIfKeyword)(attr.value), state).mapOk(value => new mir.NamedArgument({
loc: attr.loc,
key: name,
value
}));
}
toStatement(component, {
args,
params
}) {
let {
element,
state
} = component;
return this.blocks(state).mapOk(blocks => new mir.Component({
loc: element.loc,
tag: this.tag,
params,
args,
blocks
}));
}
blocks(state) {
return _statements.VISIT_STMTS.NamedBlocks(this.element.blocks, state);
}
}
exports.ClassifiedComponent = ClassifiedComponent;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9wYXNzZXMvMS1ub3JtYWxpemF0aW9uL3Zpc2l0b3JzL2VsZW1lbnQvY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFHQTs7QUFFQTs7QUFDQTs7Ozs7O0FBR00sTUFBQSxtQkFBQSxDQUEwQjtBQUc5QixFQUFBLFdBQUEsQ0FBQSxHQUFBLEVBQUEsT0FBQSxFQUFtRjtBQUEvRCxTQUFBLEdBQUEsR0FBQSxHQUFBO0FBQWlDLFNBQUEsT0FBQSxHQUFBLE9BQUE7QUFGNUMsU0FBQSxlQUFBLEdBQUEsSUFBQTtBQUU4RTs7QUFFdkYsRUFBQSxHQUFHLENBQUEsSUFBQSxFQUEyQjtBQUFFLElBQUE7QUFBRixHQUEzQixFQUF1RDtBQUN4RCxRQUFJLElBQUksR0FBRyxJQUFJLENBQWYsSUFBQTtBQUVBLFdBQU8seUJBQUEsS0FBQSxDQUFrQiw2Q0FBMkIsSUFBSSxDQUFqRCxLQUFrQixDQUFsQixFQUFBLEtBQUEsRUFBQSxLQUFBLENBQ0osS0FBRCxJQUNFLElBQUksR0FBRyxDQUFQLGFBQUEsQ0FBc0I7QUFDcEIsTUFBQSxHQUFHLEVBQUUsSUFBSSxDQURXLEdBQUE7QUFFcEIsTUFBQSxHQUFHLEVBRmlCLElBQUE7QUFHcEIsTUFBQTtBQUhvQixLQUF0QixDQUZHLENBQVA7QUFRRDs7QUFFRCxFQUFBLFdBQVcsQ0FBQSxTQUFBLEVBQStCO0FBQUEsSUFBQSxJQUFBO0FBQVEsSUFBQTtBQUFSLEdBQS9CLEVBQTZEO0FBQ3RFLFFBQUk7QUFBQSxNQUFBLE9BQUE7QUFBVyxNQUFBO0FBQVgsUUFBSixTQUFBO0FBRUEsV0FBTyxLQUFBLE1BQUEsQ0FBQSxLQUFBLEVBQUEsS0FBQSxDQUNKLE1BQUQsSUFDRSxJQUFJLEdBQUcsQ0FBUCxTQUFBLENBQWtCO0FBQ2hCLE1BQUEsR0FBRyxFQUFFLE9BQU8sQ0FESSxHQUFBO0FBRWhCLE1BQUEsR0FBRyxFQUFFLEtBRlcsR0FBQTtBQUFBLE1BQUEsTUFBQTtBQUFBLE1BQUEsSUFBQTtBQUtoQixNQUFBO0FBTGdCLEtBQWxCLENBRkcsQ0FBUDtBQVVEOztBQUVPLEVBQUEsTUFBTSxDQUFBLEtBQUEsRUFBMEI7QUFDdEMsV0FBTyx3QkFBQSxXQUFBLENBQXdCLEtBQUEsT0FBQSxDQUF4QixNQUFBLEVBQVAsS0FBTyxDQUFQO0FBQ0Q7O0FBbkM2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFTVHYyIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcblxuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3Jlc3VsdCc7XG5pbXBvcnQgKiBhcyBtaXIgZnJvbSAnLi4vLi4vLi4vMi1lbmNvZGluZy9taXInO1xuaW1wb3J0IHsgTm9ybWFsaXphdGlvblN0YXRlIH0gZnJvbSAnLi4vLi4vY29udGV4dCc7XG5pbXBvcnQgeyBjb252ZXJ0UGF0aFRvQ2FsbElmS2V5d29yZCwgVklTSVRfRVhQUlMgfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBWSVNJVF9TVE1UUyB9IGZyb20gJy4uL3N0YXRlbWVudHMnO1xuaW1wb3J0IHsgQ2xhc3NpZmllZCwgQ2xhc3NpZmllZEVsZW1lbnQsIFByZXBhcmVkQXJncyB9IGZyb20gJy4vY2xhc3NpZmllZCc7XG5cbmV4cG9ydCBjbGFzcyBDbGFzc2lmaWVkQ29tcG9uZW50IGltcGxlbWVudHMgQ2xhc3NpZmllZCB7XG4gIHJlYWRvbmx5IGR5bmFtaWNGZWF0dXJlcyA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWc6IG1pci5FeHByZXNzaW9uTm9kZSwgcHJpdmF0ZSBlbGVtZW50OiBBU1R2Mi5JbnZva2VDb21wb25lbnQpIHt9XG5cbiAgYXJnKGF0dHI6IEFTVHYyLkNvbXBvbmVudEFyZywgeyBzdGF0ZSB9OiBDbGFzc2lmaWVkRWxlbWVudCk6IFJlc3VsdDxtaXIuTmFtZWRBcmd1bWVudD4ge1xuICAgIGxldCBuYW1lID0gYXR0ci5uYW1lO1xuXG4gICAgcmV0dXJuIFZJU0lUX0VYUFJTLnZpc2l0KGNvbnZlcnRQYXRoVG9DYWxsSWZLZXl3b3JkKGF0dHIudmFsdWUpLCBzdGF0ZSkubWFwT2soXG4gICAgICAodmFsdWUpID0+XG4gICAgICAgIG5ldyBtaXIuTmFtZWRBcmd1bWVudCh7XG4gICAgICAgICAgbG9jOiBhdHRyLmxvYyxcbiAgICAgICAgICBrZXk6IG5hbWUsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHRvU3RhdGVtZW50KGNvbXBvbmVudDogQ2xhc3NpZmllZEVsZW1lbnQsIHsgYXJncywgcGFyYW1zIH06IFByZXBhcmVkQXJncyk6IFJlc3VsdDxtaXIuU3RhdGVtZW50PiB7XG4gICAgbGV0IHsgZWxlbWVudCwgc3RhdGUgfSA9IGNvbXBvbmVudDtcblxuICAgIHJldHVybiB0aGlzLmJsb2NrcyhzdGF0ZSkubWFwT2soXG4gICAgICAoYmxvY2tzKSA9PlxuICAgICAgICBuZXcgbWlyLkNvbXBvbmVudCh7XG4gICAgICAgICAgbG9jOiBlbGVtZW50LmxvYyxcbiAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICBhcmdzLFxuICAgICAgICAgIGJsb2NrcyxcbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBibG9ja3Moc3RhdGU6IE5vcm1hbGl6YXRpb25TdGF0ZSk6IFJlc3VsdDxtaXIuTmFtZWRCbG9ja3M+IHtcbiAgICByZXR1cm4gVklTSVRfU1RNVFMuTmFtZWRCbG9ja3ModGhpcy5lbGVtZW50LmJsb2Nrcywgc3RhdGUpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9