Skip to content

Commit 2c3a5e2

Browse files
committed
Merge branch 'main' of github.com:devtron-labs/devtron-fe-common-lib into feature/approval-policy-exceptions
2 parents d5b3372 + 402c559 commit 2c3a5e2

File tree

4 files changed

+39
-8
lines changed

4 files changed

+39
-8
lines changed

src/Common/CodeMirror/CodeEditorRenderer.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { Progressing } from '@Common/Progressing'
2323

2424
import { useCodeEditorContext } from './CodeEditor.context'
2525
import { CodeEditorRendererProps } from './types'
26-
import { getCodeEditorHeight, getRevertControlButton, updateDiffMinimapValues } from './utils'
26+
import { getCodeEditorHeight, getRevertControlButton, getScanLimit, updateDiffMinimapValues } from './utils'
2727
import { DiffMinimap } from './Extensions'
2828

2929
export const CodeEditorRenderer = ({
@@ -180,6 +180,8 @@ export const CodeEditorRenderer = ({
180180
useEffect(() => {
181181
// DIFF VIEW INITIALIZATION
182182
if (!loading && codeMirrorMergeParentRef.current) {
183+
const scanLimit = getScanLimit(lhsValue, value)
184+
183185
codeMirrorMergeInstance?.destroy()
184186

185187
const codeMirrorMergeView = new MergeView({
@@ -192,7 +194,7 @@ export const CodeEditorRenderer = ({
192194
extensions: [...modifiedViewExtensions, modifiedUpdateListener],
193195
},
194196
...(!readOnly ? { revertControls: 'a-to-b', renderRevertControl: getRevertControlButton } : {}),
195-
diffConfig: { scanLimit: 5000 },
197+
diffConfig: { scanLimit, timeout: 5000 },
196198
parent: codeMirrorMergeParentRef.current,
197199
})
198200
setCodeMirrorMergeInstance(codeMirrorMergeView)
@@ -212,7 +214,7 @@ export const CodeEditorRenderer = ({
212214
extensions: diffMinimapExtensions,
213215
},
214216
gutter: false,
215-
diffConfig: { scanLimit: 5000 },
217+
diffConfig: { scanLimit, timeout: 5000 },
216218
parent: diffMinimapParentRef.current,
217219
})
218220

@@ -275,6 +277,11 @@ export const CodeEditorRenderer = ({
275277
ref={codeMirrorParentDivRef}
276278
className={`flexbox w-100 ${componentSpecificThemeClass} ${codeEditorParentClassName}`}
277279
>
280+
{!codeMirrorMergeInstance && (
281+
<div className="flex h-100 w-100">
282+
<p>Calculating diff for large file. Please wait...</p>
283+
</div>
284+
)}
278285
<div
279286
ref={codeMirrorMergeParentRef}
280287
className={`cm-merge-theme flex-grow-1 h-100 dc__overflow-hidden ${readOnly ? 'code-editor__read-only' : ''}`}

src/Common/CodeMirror/Extensions/findAndReplace.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -457,9 +457,11 @@ export const codeEditorFindReplace = (view: EditorView): Panel => {
457457
}
458458

459459
const mount = () => {
460-
const findField = document.querySelector('[data-code-editor-find]') as HTMLInputElement
461-
findField?.focus()
462-
findField?.select()
460+
requestAnimationFrame(() => {
461+
const findField = document.querySelector('[data-code-editor-find]') as HTMLInputElement
462+
findField?.focus()
463+
findField?.select()
464+
})
463465
}
464466

465467
const update = ({ transactions, docChanged, state, startState }: ViewUpdate) => {

src/Common/CodeMirror/codeEditor.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,13 +267,13 @@
267267
&.cm-merge-a .cm-changedText,
268268
.cm-deletedChunk .cm-deletedText,
269269
&.cm-merge-a .cm-changedLineGutter {
270-
background: var(--R300);
270+
background: var(--R500);
271271
}
272272

273273
&.cm-merge-b .cm-changedLine,
274274
&.cm-merge-b .cm-changedText,
275275
&.cm-merge-b .cm-changedLineGutter {
276-
background: var(--G300);
276+
background: var(--G500);
277277
}
278278
}
279279

src/Common/CodeMirror/utils.tsx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,28 @@ export const updateDiffMinimapValues = (view: MergeView, transactions: readonly
168168
})
169169
}
170170

171+
export const getScanLimit = (lhsValue: string, value: string) => {
172+
const numberOfLines = Math.max((lhsValue ?? '').split('\n').length, (value ?? '').split('\n').length)
173+
174+
if (numberOfLines <= 5000) {
175+
return 5000
176+
}
177+
178+
if (numberOfLines <= 10000) {
179+
return 10000
180+
}
181+
182+
if (numberOfLines <= 15000) {
183+
return 15000
184+
}
185+
186+
if (numberOfLines <= 20000) {
187+
return 20000
188+
}
189+
190+
return 500
191+
}
192+
171193
// DOM HELPERS
172194
export const getFoldGutterElement = (open: boolean) => {
173195
const icon = document.createElement('span')

0 commit comments

Comments
 (0)