Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function interpolationCompletions(info, position) {
// Look for an interpolation in at the position.
var templatePath = utils_1.findTemplateAstAt(info.templateAst, position);
var mostSpecific = templatePath.tail;
if (mostSpecific) {
var visitor = new ExpressionVisitor(info, position, undefined, function () { return language_services_1.getExpressionScope(utils_1.diagnosticInfoFromTemplateInfo(info), templatePath, false); });
mostSpecific.visit(visitor, null);
return utils_1.uniqueByName(visitor.result);
}
}
// There is a special case of HTML where text that contains a unclosed tag is treated as
function attributeValueCompletions(info, position, attr) {
var path = utils_1.findTemplateAstAt(info.templateAst, position);
var mostSpecific = path.tail;
var dinfo = utils_1.diagnosticInfoFromTemplateInfo(info);
if (mostSpecific) {
var visitor = new ExpressionVisitor(info, position, attr, function () { return language_services_1.getExpressionScope(dinfo, path, false); });
mostSpecific.visit(visitor, null);
if (!visitor.result || !visitor.result.length) {
// Try allwoing widening the path
var widerPath_1 = utils_1.findTemplateAstAt(info.templateAst, position, /* allowWidening */ true);
if (widerPath_1.tail) {
var widerVisitor = new ExpressionVisitor(info, position, attr, function () { return language_services_1.getExpressionScope(dinfo, widerPath_1, false); });
widerPath_1.tail.visit(widerVisitor, null);
return widerVisitor.result;
}
}
return visitor.result;
}
}
function elementCompletions(info, path) {
function attributeValueCompletions(info, position, attr) {
var path = utils_1.findTemplateAstAt(info.templateAst, position);
var mostSpecific = path.tail;
var dinfo = utils_1.diagnosticInfoFromTemplateInfo(info);
if (mostSpecific) {
var visitor = new ExpressionVisitor(info, position, attr, function () { return language_services_1.getExpressionScope(dinfo, path, false); });
mostSpecific.visit(visitor, null);
if (!visitor.result || !visitor.result.length) {
// Try allwoing widening the path
var widerPath_1 = utils_1.findTemplateAstAt(info.templateAst, position, /* allowWidening */ true);
if (widerPath_1.tail) {
var widerVisitor = new ExpressionVisitor(info, position, attr, function () { return language_services_1.getExpressionScope(dinfo, widerPath_1, false); });
widerPath_1.tail.visit(widerVisitor, null);
return widerVisitor.result;
}
}
return visitor.result;
}
function locateSymbol(info) {
if (!info.position)
return undefined;
var templatePosition = info.position - info.template.span.start;
var path = utils_1.findTemplateAstAt(info.templateAst, templatePosition);
if (path.tail) {
var symbol_1 = undefined;
var span_1 = undefined;
var attributeValueSymbol_1 = function (ast, inEvent) {
if (inEvent === void 0) { inEvent = false; }
var attribute = findAttribute(info);
if (attribute) {
if (utils_1.inSpan(templatePosition, utils_1.spanOf(attribute.valueSpan))) {
var dinfo = utils_1.diagnosticInfoFromTemplateInfo(info);
var scope = language_services_1.getExpressionScope(dinfo, path, inEvent);
if (attribute.valueSpan) {
var expressionOffset = attribute.valueSpan.start.offset + 1;
var result = expressions_1.getExpressionSymbol(scope, ast, templatePosition - expressionOffset, info.template.query);
if (result) {
symbol_1 = result.symbol;
span_1 = utils_1.offsetSpan(result.span, expressionOffset);