Upgrade code to build with TypeScript 4.4
PiperOrigin-RevId: 397962431
Change-Id: I875a60a5d7bd3c39d6a311922d52611c83d9150e
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer.ts b/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer.ts
index 4cc98d0a..56bb073 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/token-highlight-layer.ts
@@ -207,7 +207,7 @@
}
private interferesWithSelection() {
- return window.getSelection()?.type === 'Range';
+ return document.getSelection()?.type === 'Range';
}
findTokenAncestor(el?: EventTarget | Element | null): {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.js b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.js
index 18fbe9a..4c1295f 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-highlight/gr-diff-highlight_test.js
@@ -251,7 +251,7 @@
};
const emulateSelection = (startNode, startOffset, endNode, endOffset) => {
- const selection = window.getSelection();
+ const selection = document.getSelection();
const range = document.createRange();
range.setStart(startNode, startOffset);
range.setEnd(endNode, endOffset);
@@ -281,7 +281,7 @@
teardown(() => {
contentStubs = null;
- window.getSelection().removeAllRanges();
+ document.getSelection().removeAllRanges();
});
test('single first line', () => {
@@ -389,7 +389,7 @@
test('collapsed', () => {
const content = stubContent(138, 'left');
emulateSelection(content.firstChild, 5, content.firstChild, 5);
- assert.isOk(window.getSelection().getRangeAt(0).startContainer);
+ assert.isOk(document.getSelection().getRangeAt(0).startContainer);
assert.isFalse(!!element.selectedRange);
});
@@ -556,7 +556,7 @@
content.querySelectorAll('hl')[3], 0,
content.querySelectorAll('span')[1], 0);
const spyCall = spy.getCall(0);
- const range = window.getSelection().getRangeAt(0);
+ const range = document.getSelection().getRangeAt(0);
assert.notDeepEqual(spyCall.returnValue, range);
});
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.ts b/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.ts
index 0051b8b..2665ef0 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection.ts
@@ -195,7 +195,7 @@
_getSelection() {
const diffHosts = querySelectorAll(document.body, 'gr-diff');
- if (!diffHosts.length) return window.getSelection();
+ if (!diffHosts.length) return document.getSelection();
const curDiffHost = diffHosts.find(diffHost => {
if (!diffHost?.shadowRoot?.getSelection) return false;
@@ -205,9 +205,9 @@
return selection && selection.type !== 'None';
});
- return curDiffHost
- ? curDiffHost.shadowRoot!.getSelection()
- : window.getSelection();
+ return curDiffHost?.shadowRoot?.getSelection
+ ? curDiffHost.shadowRoot.getSelection()
+ : document.getSelection();
}
/**
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection_test.js b/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection_test.js
index 8d7264c..15454f9 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-selection/gr-diff-selection_test.js
@@ -247,7 +247,7 @@
element.classList.add('selected-left');
element.classList.remove('selected-right');
- const selection = window.getSelection();
+ const selection = document.getSelection();
selection.removeAllRanges();
const range = document.createRange();
range.setStart(element.querySelector('div.contentText').firstChild, 3);
@@ -261,7 +261,7 @@
element.classList.add('selected-left');
element.classList.add('selected-comment');
element.classList.remove('selected-right');
- const selection = window.getSelection();
+ const selection = document.getSelection();
selection.removeAllRanges();
const range = document.createRange();
range.setStart(
@@ -277,7 +277,7 @@
element.classList.add('selected-left');
element.classList.add('selected-comment');
element.classList.remove('selected-right');
- const selection = window.getSelection();
+ const selection = document.getSelection();
selection.removeAllRanges();
const range = document.createRange();
const nodes = element.querySelectorAll('.gr-formatted-text *');
@@ -307,7 +307,7 @@
element.classList.add('selected-right');
element.classList.remove('selected-left');
- const selection = window.getSelection();
+ const selection = document.getSelection();
selection.removeAllRanges();
const range = document.createRange();
range.setStart(
@@ -329,7 +329,7 @@
};
element.classList.add('selected-left');
element.classList.remove('selected-right');
- const selection = window.getSelection();
+ const selection = document.getSelection();
selection.removeAllRanges();
const range = document.createRange();
range.setStart(element.querySelector('div.contentText').firstChild, 3);
@@ -348,7 +348,7 @@
element.classList.add('selected-left');
element.classList.add('selected-comment');
element.classList.remove('selected-right');
- selection = window.getSelection();
+ selection = document.getSelection();
selection.removeAllRanges();
range = document.createRange();
nodes = element.querySelectorAll('.gr-formatted-text *');
diff --git a/polygerrit-ui/app/types/globals.ts b/polygerrit-ui/app/types/globals.ts
index a06c2c4..b5bd2aa 100644
--- a/polygerrit-ui/app/types/globals.ts
+++ b/polygerrit-ui/app/types/globals.ts
@@ -75,4 +75,8 @@
lineNumber?: number; // non-standard property
columnNumber?: number; // non-standard property
}
+
+ interface ShadowRoot {
+ getSelection?: () => Selection | null;
+ }
}
diff --git a/polygerrit-ui/app/utils/dom-util.ts b/polygerrit-ui/app/utils/dom-util.ts
index e7cc956..16129af 100644
--- a/polygerrit-ui/app/utils/dom-util.ts
+++ b/polygerrit-ui/app/utils/dom-util.ts
@@ -227,7 +227,7 @@
// document.activeElement is not enough, because it's not getting activeElement
// without looking inside of shadow roots. This will find best activeElement.
export function findActiveElement(
- root: DocumentOrShadowRoot | null,
+ root: Document | ShadowRoot | null,
ignoreDialogs?: boolean
): HTMLElement | null {
if (root === null) {
@@ -257,7 +257,7 @@
export function isSafari() {
return (
/^((?!chrome|android).)*safari/i.test(navigator.userAgent) ||
- (/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream)
+ /iPad|iPhone|iPod/.test(navigator.userAgent)
);
}