Vscode merge (#4582)

* Merge from vscode 37cb23d3dd4f9433d56d4ba5ea3203580719a0bd

* fix issues with merges

* bump node version in azpipe

* replace license headers

* remove duplicate launch task

* fix build errors

* fix build errors

* fix tslint issues

* working through package and linux build issues

* more work

* wip

* fix packaged builds

* working through linux build errors

* wip

* wip

* wip

* fix mac and linux file limits

* iterate linux pipeline

* disable editor typing

* revert series to parallel

* remove optimize vscode from linux

* fix linting issues

* revert testing change

* add work round for new node

* readd packaging for extensions

* fix issue with angular not resolving decorator dependencies
This commit is contained in:
Anthony Dresser
2019-03-19 17:44:35 -07:00
committed by GitHub
parent 833d197412
commit 87765e8673
1879 changed files with 54505 additions and 38058 deletions

View File

@@ -253,7 +253,7 @@ export class HitTestContext {
public static getZoneAtCoord(context: ViewContext, mouseVerticalOffset: number): IViewZoneData | null {
// The target is either a view zone or the empty space after the last view-line
let viewZoneWhitespace = context.viewLayout.getWhitespaceAtVerticalOffset(mouseVerticalOffset);
const viewZoneWhitespace = context.viewLayout.getWhitespaceAtVerticalOffset(mouseVerticalOffset);
if (viewZoneWhitespace) {
let viewZoneMiddle = viewZoneWhitespace.verticalOffset + viewZoneWhitespace.height / 2,
@@ -295,16 +295,16 @@ export class HitTestContext {
public getFullLineRangeAtCoord(mouseVerticalOffset: number): { range: EditorRange; isAfterLines: boolean; } {
if (this._context.viewLayout.isAfterLines(mouseVerticalOffset)) {
// Below the last line
let lineNumber = this._context.model.getLineCount();
let maxLineColumn = this._context.model.getLineMaxColumn(lineNumber);
const lineNumber = this._context.model.getLineCount();
const maxLineColumn = this._context.model.getLineMaxColumn(lineNumber);
return {
range: new EditorRange(lineNumber, maxLineColumn, lineNumber, maxLineColumn),
isAfterLines: true
};
}
let lineNumber = this._context.viewLayout.getLineNumberAtVerticalOffset(mouseVerticalOffset);
let maxLineColumn = this._context.model.getLineMaxColumn(lineNumber);
const lineNumber = this._context.viewLayout.getLineNumberAtVerticalOffset(mouseVerticalOffset);
const maxLineColumn = this._context.model.getLineMaxColumn(lineNumber);
return {
range: new EditorRange(lineNumber, 1, lineNumber, maxLineColumn),
isAfterLines: false
@@ -430,8 +430,8 @@ function createEmptyContentDataInLines(horizontalDistanceToText: number): IEmpty
export class MouseTargetFactory {
private _context: ViewContext;
private _viewHelper: IPointerHandlerHelper;
private readonly _context: ViewContext;
private readonly _viewHelper: IPointerHandlerHelper;
constructor(context: ViewContext, viewHelper: IPointerHandlerHelper) {
this._context = context;
@@ -439,8 +439,8 @@ export class MouseTargetFactory {
}
public mouseTargetIsWidget(e: EditorMouseEvent): boolean {
let t = <Element>e.target;
let path = PartFingerprints.collect(t, this._viewHelper.viewDomNode);
const t = <Element>e.target;
const path = PartFingerprints.collect(t, this._viewHelper.viewDomNode);
// Is it a content widget?
if (ElementPath.isChildOfContentWidgets(path) || ElementPath.isChildOfOverflowingContentWidgets(path)) {
@@ -459,7 +459,7 @@ export class MouseTargetFactory {
const ctx = new HitTestContext(this._context, this._viewHelper, lastViewCursorsRenderData);
const request = new HitTestRequest(ctx, editorPos, pos, target);
try {
let r = MouseTargetFactory._createMouseTarget(ctx, request, false);
const r = MouseTargetFactory._createMouseTarget(ctx, request, false);
// console.log(r.toString());
return r;
} catch (err) {
@@ -510,7 +510,7 @@ export class MouseTargetFactory {
private static _hitTestContentWidget(ctx: HitTestContext, request: ResolvedHitTestRequest): MouseTarget | null {
// Is it a content widget?
if (ElementPath.isChildOfContentWidgets(request.targetPath) || ElementPath.isChildOfOverflowingContentWidgets(request.targetPath)) {
let widgetId = ctx.findAttribute(request.target, 'widgetId');
const widgetId = ctx.findAttribute(request.target, 'widgetId');
if (widgetId) {
return request.fulfill(MouseTargetType.CONTENT_WIDGET, null, null, widgetId);
} else {
@@ -523,7 +523,7 @@ export class MouseTargetFactory {
private static _hitTestOverlayWidget(ctx: HitTestContext, request: ResolvedHitTestRequest): MouseTarget | null {
// Is it an overlay widget?
if (ElementPath.isChildOfOverlayWidgets(request.targetPath)) {
let widgetId = ctx.findAttribute(request.target, 'widgetId');
const widgetId = ctx.findAttribute(request.target, 'widgetId');
if (widgetId) {
return request.fulfill(MouseTargetType.OVERLAY_WIDGET, null, null, widgetId);
} else {
@@ -583,9 +583,9 @@ export class MouseTargetFactory {
}
private static _hitTestViewZone(ctx: HitTestContext, request: ResolvedHitTestRequest): MouseTarget | null {
let viewZoneData = ctx.getZoneAtCoord(request.mouseVerticalOffset);
const viewZoneData = ctx.getZoneAtCoord(request.mouseVerticalOffset);
if (viewZoneData) {
let mouseTargetType = (request.isInContentArea ? MouseTargetType.CONTENT_VIEW_ZONE : MouseTargetType.GUTTER_VIEW_ZONE);
const mouseTargetType = (request.isInContentArea ? MouseTargetType.CONTENT_VIEW_ZONE : MouseTargetType.GUTTER_VIEW_ZONE);
return request.fulfill(mouseTargetType, viewZoneData.position, null, viewZoneData);
}
@@ -602,8 +602,8 @@ export class MouseTargetFactory {
private static _hitTestMargin(ctx: HitTestContext, request: ResolvedHitTestRequest): MouseTarget | null {
if (request.isInMarginArea) {
let res = ctx.getFullLineRangeAtCoord(request.mouseVerticalOffset);
let pos = res.range.getStartPosition();
const res = ctx.getFullLineRangeAtCoord(request.mouseVerticalOffset);
const pos = res.range.getStartPosition();
let offset = Math.abs(request.pos.x - request.editorPos.x);
const detail: IMarginData = {
isAfterLines: res.isAfterLines,
@@ -683,7 +683,7 @@ export class MouseTargetFactory {
private static _hitTestScrollbarSlider(ctx: HitTestContext, request: ResolvedHitTestRequest): MouseTarget | null {
if (ElementPath.isChildOfScrollableElement(request.targetPath)) {
if (request.target && request.target.nodeType === 1) {
let className = request.target.className;
const className = request.target.className;
if (className && /\b(slider|scrollbar)\b/.test(className)) {
const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);
const maxColumn = ctx.model.getLineMaxColumn(possibleLineNumber);
@@ -707,8 +707,8 @@ export class MouseTargetFactory {
}
public getMouseColumn(editorPos: EditorPagePosition, pos: PageCoordinates): number {
let layoutInfo = this._context.configuration.editor.layoutInfo;
let mouseContentHorizontalOffset = this._context.viewLayout.getCurrentScrollLeft() + pos.x - editorPos.x - layoutInfo.contentLeft;
const layoutInfo = this._context.configuration.editor.layoutInfo;
const mouseContentHorizontalOffset = this._context.viewLayout.getCurrentScrollLeft() + pos.x - editorPos.x - layoutInfo.contentLeft;
return MouseTargetFactory._getMouseColumn(mouseContentHorizontalOffset, this._context.configuration.editor.fontInfo.typicalHalfwidthCharacterWidth);
}
@@ -716,14 +716,14 @@ export class MouseTargetFactory {
if (mouseContentHorizontalOffset < 0) {
return 1;
}
let chars = Math.round(mouseContentHorizontalOffset / typicalHalfwidthCharacterWidth);
const chars = Math.round(mouseContentHorizontalOffset / typicalHalfwidthCharacterWidth);
return (chars + 1);
}
private static createMouseTargetFromHitTestPosition(ctx: HitTestContext, request: HitTestRequest, lineNumber: number, column: number): MouseTarget {
let pos = new Position(lineNumber, column);
const pos = new Position(lineNumber, column);
let lineWidth = ctx.getLineWidth(lineNumber);
const lineWidth = ctx.getLineWidth(lineNumber);
if (request.mouseContentHorizontalOffset > lineWidth) {
if (browser.isEdge && pos.column === 1) {
@@ -741,7 +741,7 @@ export class MouseTargetFactory {
return request.fulfill(MouseTargetType.UNKNOWN, pos);
}
let columnHorizontalOffset = visibleRange.left;
const columnHorizontalOffset = visibleRange.left;
if (request.mouseContentHorizontalOffset === columnHorizontalOffset) {
return request.fulfill(MouseTargetType.CONTENT_TEXT, pos);
@@ -750,7 +750,7 @@ export class MouseTargetFactory {
// Let's define a, b, c and check if the offset is in between them...
interface OffsetColumn { offset: number; column: number; }
let points: OffsetColumn[] = [];
const points: OffsetColumn[] = [];
points.push({ offset: visibleRange.left, column: column });
if (column > 1) {
const visibleRange = ctx.visibleRangeForPosition2(lineNumber, column - 1);
@@ -786,9 +786,9 @@ export class MouseTargetFactory {
// In Chrome, especially on Linux it is possible to click between lines,
// so try to adjust the `hity` below so that it lands in the center of a line
let lineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);
let lineVerticalOffset = ctx.getVerticalOffsetForLineNumber(lineNumber);
let lineCenteredVerticalOffset = lineVerticalOffset + Math.floor(ctx.lineHeight / 2);
const lineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);
const lineVerticalOffset = ctx.getVerticalOffsetForLineNumber(lineNumber);
const lineCenteredVerticalOffset = lineVerticalOffset + Math.floor(ctx.lineHeight / 2);
let adjustedPageY = request.pos.y + (lineCenteredVerticalOffset - request.mouseVerticalOffset);
if (adjustedPageY <= request.editorPos.y) {
@@ -798,9 +798,9 @@ export class MouseTargetFactory {
adjustedPageY = request.editorPos.y + ctx.layoutInfo.height - 1;
}
let adjustedPage = new PageCoordinates(request.pos.x, adjustedPageY);
const adjustedPage = new PageCoordinates(request.pos.x, adjustedPageY);
let r = this._actualDoHitTestWithCaretRangeFromPoint(ctx, adjustedPage.toClientCoordinates());
const r = this._actualDoHitTestWithCaretRangeFromPoint(ctx, adjustedPage.toClientCoordinates());
if (r.position) {
return r;
}
@@ -811,7 +811,7 @@ export class MouseTargetFactory {
private static _actualDoHitTestWithCaretRangeFromPoint(ctx: HitTestContext, coords: ClientCoordinates): IHitTestResult {
let range: Range = document.caretRangeFromPoint(coords.clientX, coords.clientY);
const range: Range = document.caretRangeFromPoint(coords.clientX, coords.clientY);
if (!range || !range.startContainer) {
return {
@@ -821,18 +821,18 @@ export class MouseTargetFactory {
}
// Chrome always hits a TEXT_NODE, while Edge sometimes hits a token span
let startContainer = range.startContainer;
const startContainer = range.startContainer;
let hitTarget: HTMLElement | null = null;
if (startContainer.nodeType === startContainer.TEXT_NODE) {
// startContainer is expected to be the token text
let parent1 = startContainer.parentNode; // expected to be the token span
let parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line container span
let parent3 = parent2 ? parent2.parentNode : null; // expected to be the view line div
let parent3ClassName = parent3 && parent3.nodeType === parent3.ELEMENT_NODE ? (<HTMLElement>parent3).className : null;
const parent1 = startContainer.parentNode; // expected to be the token span
const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line container span
const parent3 = parent2 ? parent2.parentNode : null; // expected to be the view line div
const parent3ClassName = parent3 && parent3.nodeType === parent3.ELEMENT_NODE ? (<HTMLElement>parent3).className : null;
if (parent3ClassName === ViewLine.CLASS_NAME) {
let p = ctx.getPositionFromDOMInfo(<HTMLElement>parent1, range.startOffset);
const p = ctx.getPositionFromDOMInfo(<HTMLElement>parent1, range.startOffset);
return {
position: p,
hitTarget: null
@@ -842,12 +842,12 @@ export class MouseTargetFactory {
}
} else if (startContainer.nodeType === startContainer.ELEMENT_NODE) {
// startContainer is expected to be the token span
let parent1 = startContainer.parentNode; // expected to be the view line container span
let parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line div
let parent2ClassName = parent2 && parent2.nodeType === parent2.ELEMENT_NODE ? (<HTMLElement>parent2).className : null;
const parent1 = startContainer.parentNode; // expected to be the view line container span
const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line div
const parent2ClassName = parent2 && parent2.nodeType === parent2.ELEMENT_NODE ? (<HTMLElement>parent2).className : null;
if (parent2ClassName === ViewLine.CLASS_NAME) {
let p = ctx.getPositionFromDOMInfo(<HTMLElement>startContainer, (<HTMLElement>startContainer).textContent!.length);
const p = ctx.getPositionFromDOMInfo(<HTMLElement>startContainer, (<HTMLElement>startContainer).textContent!.length);
return {
position: p,
hitTarget: null
@@ -867,17 +867,17 @@ export class MouseTargetFactory {
* Most probably Gecko
*/
private static _doHitTestWithCaretPositionFromPoint(ctx: HitTestContext, coords: ClientCoordinates): IHitTestResult {
let hitResult: { offsetNode: Node; offset: number; } = (<any>document).caretPositionFromPoint(coords.clientX, coords.clientY);
const hitResult: { offsetNode: Node; offset: number; } = (<any>document).caretPositionFromPoint(coords.clientX, coords.clientY);
if (hitResult.offsetNode.nodeType === hitResult.offsetNode.TEXT_NODE) {
// offsetNode is expected to be the token text
let parent1 = hitResult.offsetNode.parentNode; // expected to be the token span
let parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line container span
let parent3 = parent2 ? parent2.parentNode : null; // expected to be the view line div
let parent3ClassName = parent3 && parent3.nodeType === parent3.ELEMENT_NODE ? (<HTMLElement>parent3).className : null;
const parent1 = hitResult.offsetNode.parentNode; // expected to be the token span
const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line container span
const parent3 = parent2 ? parent2.parentNode : null; // expected to be the view line div
const parent3ClassName = parent3 && parent3.nodeType === parent3.ELEMENT_NODE ? (<HTMLElement>parent3).className : null;
if (parent3ClassName === ViewLine.CLASS_NAME) {
let p = ctx.getPositionFromDOMInfo(<HTMLElement>hitResult.offsetNode.parentNode, hitResult.offset);
const p = ctx.getPositionFromDOMInfo(<HTMLElement>hitResult.offsetNode.parentNode, hitResult.offset);
return {
position: p,
hitTarget: null
@@ -903,7 +903,7 @@ export class MouseTargetFactory {
let resultPosition: Position | null = null;
let resultHitTarget: Element | null = null;
let textRange: IETextRange = (<any>document.body).createTextRange();
const textRange: IETextRange = (<any>document.body).createTextRange();
try {
textRange.moveToPoint(coords.clientX, coords.clientY);
} catch (err) {
@@ -916,14 +916,14 @@ export class MouseTargetFactory {
textRange.collapse(true);
// Now, let's do our best to figure out what we hit :)
let parentElement = textRange ? textRange.parentElement() : null;
let parent1 = parentElement ? parentElement.parentNode : null;
let parent2 = parent1 ? parent1.parentNode : null;
const parentElement = textRange ? textRange.parentElement() : null;
const parent1 = parentElement ? parentElement.parentNode : null;
const parent2 = parent1 ? parent1.parentNode : null;
let parent2ClassName = parent2 && parent2.nodeType === parent2.ELEMENT_NODE ? (<HTMLElement>parent2).className : '';
const parent2ClassName = parent2 && parent2.nodeType === parent2.ELEMENT_NODE ? (<HTMLElement>parent2).className : '';
if (parent2ClassName === ViewLine.CLASS_NAME) {
let rangeToContainEntireSpan = textRange.duplicate();
const rangeToContainEntireSpan = textRange.duplicate();
rangeToContainEntireSpan.moveToElementText(parentElement!);
rangeToContainEntireSpan.setEndPoint('EndToStart', textRange);