提交 aca0a5ed 编写于 作者: I isidor

Avoid using Object.create(null) to create objects

fixes #67973
上级 46a5d56b
......@@ -141,20 +141,20 @@ export abstract class AbstractExpressionsRenderer implements ITreeRenderer<IExpr
abstract get templateId(): string;
renderTemplate(container: HTMLElement): IExpressionTemplateData {
const data: IExpressionTemplateData = Object.create(null);
data.expression = dom.append(container, $('.expression'));
data.name = dom.append(data.expression, $('span.name'));
data.value = dom.append(data.expression, $('span.value'));
data.label = new HighlightedLabel(data.name, false);
const expression = dom.append(container, $('.expression'));
const name = dom.append(expression, $('span.name'));
const value = dom.append(expression, $('span.value'));
const label = new HighlightedLabel(name, false);
data.inputBoxContainer = dom.append(data.expression, $('.inputBoxContainer'));
const inputBoxContainer = dom.append(expression, $('.inputBoxContainer'));
const toDispose: IDisposable[] = [];
data.enableInputBox = (expression: IExpression, options: IInputBoxOptions) => {
data.name.style.display = 'none';
data.value.style.display = 'none';
data.inputBoxContainer.style.display = 'initial';
const enableInputBox = (expression: IExpression, options: IInputBoxOptions) => {
name.style.display = 'none';
value.style.display = 'none';
inputBoxContainer.style.display = 'initial';
const inputBox = new InputBox(data.inputBoxContainer, this.contextViewService, {
const inputBox = new InputBox(inputBoxContainer, this.contextViewService, {
placeholder: options.placeholder,
ariaLabel: options.ariaLabel
});
......@@ -165,7 +165,8 @@ export abstract class AbstractExpressionsRenderer implements ITreeRenderer<IExpr
inputBox.select();
let disposed = false;
data.toDispose = [inputBox, styler];
toDispose.push(inputBox);
toDispose.push(styler);
const wrapUp = (renamed: boolean) => {
if (!disposed) {
......@@ -174,15 +175,15 @@ export abstract class AbstractExpressionsRenderer implements ITreeRenderer<IExpr
options.onFinish(inputBox.value, renamed);
// need to remove the input box since this template will be reused.
data.inputBoxContainer.removeChild(inputBox.element);
data.name.style.display = 'initial';
data.value.style.display = 'initial';
data.inputBoxContainer.style.display = 'none';
dispose(data.toDispose);
inputBoxContainer.removeChild(inputBox.element);
name.style.display = 'initial';
value.style.display = 'initial';
inputBoxContainer.style.display = 'none';
dispose(toDispose);
}
};
data.toDispose.push(dom.addStandardDisposableListener(inputBox.inputElement, 'keydown', (e: IKeyboardEvent) => {
toDispose.push(dom.addStandardDisposableListener(inputBox.inputElement, 'keydown', (e: IKeyboardEvent) => {
const isEscape = e.equals(KeyCode.Escape);
const isEnter = e.equals(KeyCode.Enter);
if (isEscape || isEnter) {
......@@ -191,17 +192,17 @@ export abstract class AbstractExpressionsRenderer implements ITreeRenderer<IExpr
wrapUp(isEnter);
}
}));
data.toDispose.push(dom.addDisposableListener(inputBox.inputElement, 'blur', () => {
toDispose.push(dom.addDisposableListener(inputBox.inputElement, 'blur', () => {
wrapUp(true);
}));
data.toDispose.push(dom.addDisposableListener(inputBox.inputElement, 'click', e => {
toDispose.push(dom.addDisposableListener(inputBox.inputElement, 'click', e => {
// Do not expand / collapse selected elements
e.preventDefault();
e.stopPropagation();
}));
};
return data;
return { expression, name, value, label, enableInputBox, inputBoxContainer, toDispose };
}
renderElement(node: ITreeNode<IExpression, FuzzyScore>, index: number, data: IExpressionTemplateData): void {
......
......@@ -555,9 +555,8 @@ class LoadedScriptsRenderer implements ITreeRenderer<BaseTreeItem, FuzzyScore, I
}
renderTemplate(container: HTMLElement): ILoadedScriptsItemTemplateData {
let data: ILoadedScriptsItemTemplateData = Object.create(null);
data.label = this.labels.create(container, { supportHighlights: true });
return data;
const label = this.labels.create(container, { supportHighlights: true });
return { label };
}
renderElement(node: ITreeNode<BaseTreeItem, FuzzyScore>, index: number, data: ILoadedScriptsItemTemplateData): void {
......
......@@ -365,14 +365,13 @@ class SessionsRenderer implements ITreeRenderer<IDebugSession, FuzzyScore, ISess
}
renderTemplate(container: HTMLElement): ISessionTemplateData {
let data: ISessionTemplateData = Object.create(null);
data.session = dom.append(container, $('.session'));
data.name = dom.append(data.session, $('.name'));
data.state = dom.append(data.session, $('.state'));
data.stateLabel = dom.append(data.state, $('span.label'));
data.label = new HighlightedLabel(data.name, false);
const session = dom.append(container, $('.session'));
const name = dom.append(session, $('.name'));
const state = dom.append(session, $('.state'));
const stateLabel = dom.append(state, $('span.label'));
const label = new HighlightedLabel(name, false);
return data;
return { session, name, state, stateLabel, label };
}
renderElement(element: ITreeNode<IDebugSession, FuzzyScore>, index: number, data: ISessionTemplateData): void {
......@@ -435,16 +434,15 @@ class StackFramesRenderer implements ITreeRenderer<IStackFrame, FuzzyScore, ISta
}
renderTemplate(container: HTMLElement): IStackFrameTemplateData {
const data: IStackFrameTemplateData = Object.create(null);
data.stackFrame = dom.append(container, $('.stack-frame'));
const labelDiv = dom.append(data.stackFrame, $('span.label.expression'));
data.file = dom.append(data.stackFrame, $('.file'));
data.fileName = dom.append(data.file, $('span.file-name'));
const wrapper = dom.append(data.file, $('span.line-number-wrapper'));
data.lineNumber = dom.append(wrapper, $('span.line-number'));
data.label = new HighlightedLabel(labelDiv, false);
const stackFrame = dom.append(container, $('.stack-frame'));
const labelDiv = dom.append(stackFrame, $('span.label.expression'));
const file = dom.append(stackFrame, $('.file'));
const fileName = dom.append(file, $('span.file-name'));
const wrapper = dom.append(file, $('span.line-number-wrapper'));
const lineNumber = dom.append(wrapper, $('span.line-number'));
const label = new HighlightedLabel(labelDiv, false);
return data;
return { file, fileName, label, lineNumber, stackFrame };
}
renderElement(element: ITreeNode<IStackFrame, FuzzyScore>, index: number, data: IStackFrameTemplateData): void {
......@@ -483,10 +481,9 @@ class ErrorsRenderer implements ITreeRenderer<string, FuzzyScore, IErrorTemplate
}
renderTemplate(container: HTMLElement): IErrorTemplateData {
const data: IErrorTemplateData = Object.create(null);
data.label = dom.append(container, $('.error'));
const label = dom.append(container, $('.error'));
return data;
return { label };
}
renderElement(element: ITreeNode<string, FuzzyScore>, index: number, data: IErrorTemplateData): void {
......@@ -509,10 +506,9 @@ class LoadMoreRenderer implements ITreeRenderer<ThreadAndSessionIds, FuzzyScore,
}
renderTemplate(container: HTMLElement): IErrorTemplateData {
const data: ILabelTemplateData = Object.create(null);
data.label = dom.append(container, $('.load-more'));
const label = dom.append(container, $('.load-more'));
return data;
return { label };
}
renderElement(element: ITreeNode<ThreadAndSessionIds, FuzzyScore>, index: number, data: ILabelTemplateData): void {
......@@ -532,10 +528,9 @@ class ShowMoreRenderer implements ITreeRenderer<IStackFrame[], FuzzyScore, ILabe
}
renderTemplate(container: HTMLElement): IErrorTemplateData {
let data: ILabelTemplateData = Object.create(null);
data.label = dom.append(container, $('.show-more'));
const label = dom.append(container, $('.show-more'));
return data;
return { label };
}
renderElement(element: ITreeNode<IStackFrame[], FuzzyScore>, index: number, data: ILabelTemplateData): void {
......
......@@ -518,7 +518,6 @@ interface ISimpleReplElementTemplateData {
source: HTMLElement;
getReplElementSource(): IReplElementSource;
toDispose: IDisposable[];
label: HighlightedLabel;
}
interface IRawObjectReplTemplateData {
......@@ -538,15 +537,14 @@ class ReplExpressionsRenderer implements ITreeRenderer<Expression, FuzzyScore, I
}
renderTemplate(container: HTMLElement): IExpressionTemplateData {
const data: IExpressionTemplateData = Object.create(null);
dom.addClass(container, 'input-output-pair');
data.input = dom.append(container, $('.input.expression'));
data.label = new HighlightedLabel(data.input, false);
data.output = dom.append(container, $('.output.expression'));
data.value = dom.append(data.output, $('span.value'));
data.annotation = dom.append(data.output, $('span'));
const input = dom.append(container, $('.input.expression'));
const label = new HighlightedLabel(input, false);
const output = dom.append(container, $('.output.expression'));
const value = dom.append(output, $('span.value'));
const annotation = dom.append(output, $('span'));
return data;
return { input, label, output, value, annotation };
}
renderElement(element: ITreeNode<Expression, FuzzyScore>, index: number, templateData: IExpressionTemplateData): void {
......@@ -639,17 +637,15 @@ class ReplRawObjectsRenderer implements ITreeRenderer<RawObjectReplElement, Fuzz
}
renderTemplate(container: HTMLElement): IRawObjectReplTemplateData {
const data: IRawObjectReplTemplateData = Object.create(null);
dom.addClass(container, 'output');
data.container = container;
data.expression = dom.append(container, $('.output.expression'));
data.name = dom.append(data.expression, $('span.name'));
data.label = new HighlightedLabel(data.name, false);
data.value = dom.append(data.expression, $('span.value'));
data.annotation = dom.append(data.expression, $('span'));
const expression = dom.append(container, $('.output.expression'));
const name = dom.append(expression, $('span.name'));
const label = new HighlightedLabel(name, false);
const value = dom.append(expression, $('span.value'));
const annotation = dom.append(expression, $('span'));
return data;
return { container, expression, name, label, value, annotation };
}
renderElement(node: ITreeNode<RawObjectReplElement, FuzzyScore>, index: number, templateData: IRawObjectReplTemplateData): void {
......
......@@ -210,11 +210,10 @@ class ScopesRenderer implements ITreeRenderer<IScope, FuzzyScore, IScopeTemplate
}
renderTemplate(container: HTMLElement): IScopeTemplateData {
let data: IScopeTemplateData = Object.create(null);
data.name = dom.append(container, $('.scope'));
data.label = new HighlightedLabel(data.name, false);
const name = dom.append(container, $('.scope'));
const label = new HighlightedLabel(name, false);
return data;
return { name, label };
}
renderElement(element: ITreeNode<IScope, FuzzyScore>, index: number, templateData: IScopeTemplateData): void {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册