monaco-editor-core 0.58.0-dev-20261107 → 0.58.0-dev-20261108

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -1,6 +1,6 @@
1
1
  /*!-----------------------------------------------------------
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Version: 0.58.0-dev-20261107(5359a3330383137dfdf8897ba1d93d943fec4027)
3
+ * Version: 0.58.0-dev-20261108(5359a3330383137dfdf8897ba1d93d943fec4027)
4
4
  * Released under the MIT license
5
5
  * https://github.com/microsoft/vscode/blob/main/LICENSE.txt
6
6
  *-----------------------------------------------------------*/
@@ -19,6 +19,7 @@ import { minimapSelection, minimapBackground, minimapForegroundOpacity, editorFo
19
19
  import { Selection } from '../../../common/core/selection.js';
20
20
  import { EventType, Gesture } from '../../../../base/browser/touch.js';
21
21
  import { MinimapCharRendererFactory } from './minimapCharRendererFactory.js';
22
+ import { RecordedFrame, RowSignatures } from './minimapDirtyRows.js';
22
23
  import { createSingleCallFunction } from '../../../../base/common/functional.js';
23
24
  import { LRUCache } from '../../../../base/common/map.js';
24
25
  import { DEFAULT_FONT_FAMILY } from '../../../../base/browser/fonts.js';
@@ -116,6 +117,7 @@ class MinimapOptions {
116
117
  && this.minimapCharWidth === other.minimapCharWidth
117
118
  && this.sectionHeaderFontSize === other.sectionHeaderFontSize
118
119
  && this.sectionHeaderLetterSpacing === other.sectionHeaderLetterSpacing
120
+ && this.sectionHeaderFontColor.equals(other.sectionHeaderFontColor)
119
121
  && this.defaultBackgroundColor && this.defaultBackgroundColor.equals(other.defaultBackgroundColor)
120
122
  && this.backgroundColor && this.backgroundColor.equals(other.backgroundColor)
121
123
  && this.foregroundAlpha === other.foregroundAlpha);
@@ -892,6 +894,11 @@ export class Minimap extends ViewPart {
892
894
  class InnerMinimap extends Disposable {
893
895
  constructor(theme, model) {
894
896
  super();
897
+ /**
898
+ * What each row of `_decorationsCanvas` shows, so that the next frame only redraws
899
+ * the rows that change. Drawing on all of a visible canvas makes the browser repaint all of it.
900
+ */
901
+ this._lastDecorationsRows = null;
895
902
  this._renderDecorations = false;
896
903
  this._gestureInProgress = false;
897
904
  this._isMouseOverMinimap = false;
@@ -1086,6 +1093,7 @@ class InnerMinimap extends Disposable {
1086
1093
  this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight);
1087
1094
  this._decorationsCanvas.domNode.width = this._model.options.canvasInnerWidth;
1088
1095
  this._decorationsCanvas.domNode.height = this._model.options.canvasInnerHeight;
1096
+ this._lastDecorationsRows = null;
1089
1097
  this._slider.setWidth(this._model.options.minimapWidth);
1090
1098
  }
1091
1099
  _getBuffer() {
@@ -1195,26 +1203,41 @@ class InnerMinimap extends Disposable {
1195
1203
  const minimapLineHeight = this._model.options.minimapLineHeight;
1196
1204
  const minimapCharWidth = this._model.options.minimapCharWidth;
1197
1205
  const tabSize = this._model.getOptions().tabSize;
1206
+ if (canvasInnerWidth === 0 || canvasInnerHeight === 0) {
1207
+ return;
1208
+ }
1198
1209
  const canvasContext = this._decorationsCanvas.domNode.getContext('2d');
1199
- canvasContext.clearRect(0, 0, canvasInnerWidth, canvasInnerHeight);
1210
+ const frame = new RecordedFrame(canvasInnerHeight);
1200
1211
  // We first need to render line highlights and then render decorations on top of those.
1201
1212
  // But we need to pick a single color for each line, and use that as a line highlight.
1202
1213
  // This needs to be the color of the decoration with the highest `zIndex`, but priority
1203
1214
  // is given to the selection.
1204
1215
  const highlightedLines = new ContiguousLineMap(layout.startLineNumber, layout.endLineNumber, false);
1205
- this._renderSelectionLineHighlights(canvasContext, selections, highlightedLines, layout, minimapLineHeight);
1206
- this._renderDecorationsLineHighlights(canvasContext, decorations, highlightedLines, layout, minimapLineHeight);
1216
+ this._renderSelectionLineHighlights(frame, selections, highlightedLines, layout, minimapLineHeight, canvasInnerWidth);
1217
+ this._renderDecorationsLineHighlights(frame, decorations, highlightedLines, layout, minimapLineHeight, canvasInnerWidth);
1207
1218
  const lineOffsetMap = new ContiguousLineMap(layout.startLineNumber, layout.endLineNumber, null);
1208
- this._renderSelectionsHighlights(canvasContext, selections, lineOffsetMap, layout, minimapLineHeight, tabSize, minimapCharWidth, canvasInnerWidth);
1209
- this._renderDecorationsHighlights(canvasContext, decorations, lineOffsetMap, layout, minimapLineHeight, tabSize, minimapCharWidth, canvasInnerWidth);
1210
- this._renderSectionHeaders(layout);
1211
- }
1212
- }
1213
- _renderSelectionLineHighlights(canvasContext, selections, highlightedLines, layout, minimapLineHeight) {
1219
+ this._renderSelectionsHighlights(frame, selections, lineOffsetMap, layout, minimapLineHeight, tabSize, minimapCharWidth, canvasInnerWidth);
1220
+ this._renderDecorationsHighlights(frame, decorations, lineOffsetMap, layout, minimapLineHeight, tabSize, minimapCharWidth, canvasInnerWidth);
1221
+ this._renderSectionHeaders(frame, canvasContext, layout);
1222
+ // Only redraw the rows that look different from the last frame
1223
+ const dirty = RowSignatures.diff(this._lastDecorationsRows, frame.rows);
1224
+ this._lastDecorationsRows = frame.rows;
1225
+ if (dirty) {
1226
+ canvasContext.save();
1227
+ canvasContext.beginPath();
1228
+ canvasContext.rect(0, dirty.start, canvasInnerWidth, dirty.end - dirty.start);
1229
+ canvasContext.clip();
1230
+ canvasContext.clearRect(0, dirty.start, canvasInnerWidth, dirty.end - dirty.start);
1231
+ frame.replay(canvasContext, dirty);
1232
+ canvasContext.restore();
1233
+ }
1234
+ }
1235
+ }
1236
+ _renderSelectionLineHighlights(frame, selections, highlightedLines, layout, minimapLineHeight, canvasInnerWidth) {
1214
1237
  if (!this._selectionColor || this._selectionColor.isTransparent()) {
1215
1238
  return;
1216
1239
  }
1217
- canvasContext.fillStyle = this._selectionColor.transparent(0.5).toString();
1240
+ const fillStyle = this._selectionColor.transparent(0.5).toString();
1218
1241
  let y1 = 0;
1219
1242
  let y2 = 0;
1220
1243
  for (const selection of selections) {
@@ -1236,7 +1259,7 @@ class InnerMinimap extends Disposable {
1236
1259
  else {
1237
1260
  if (y2 > y1) {
1238
1261
  // flush
1239
- canvasContext.fillRect(MINIMAP_GUTTER_WIDTH, y1, canvasContext.canvas.width, y2 - y1);
1262
+ frame.fillRect(fillStyle, MINIMAP_GUTTER_WIDTH, y1, canvasInnerWidth, y2 - y1);
1240
1263
  }
1241
1264
  y1 = yy1;
1242
1265
  y2 = yy2;
@@ -1244,10 +1267,10 @@ class InnerMinimap extends Disposable {
1244
1267
  }
1245
1268
  if (y2 > y1) {
1246
1269
  // flush
1247
- canvasContext.fillRect(MINIMAP_GUTTER_WIDTH, y1, canvasContext.canvas.width, y2 - y1);
1270
+ frame.fillRect(fillStyle, MINIMAP_GUTTER_WIDTH, y1, canvasInnerWidth, y2 - y1);
1248
1271
  }
1249
1272
  }
1250
- _renderDecorationsLineHighlights(canvasContext, decorations, highlightedLines, layout, minimapLineHeight) {
1273
+ _renderDecorationsLineHighlights(frame, decorations, highlightedLines, layout, minimapLineHeight, canvasInnerWidth) {
1251
1274
  const highlightColors = new Map();
1252
1275
  // Loop backwards to hit first decorations with higher `zIndex`
1253
1276
  for (let i = decorations.length - 1; i >= 0; i--) {
@@ -1271,18 +1294,17 @@ class InnerMinimap extends Disposable {
1271
1294
  highlightColor = decorationColor.transparent(0.5).toString();
1272
1295
  highlightColors.set(decorationColor.toString(), highlightColor);
1273
1296
  }
1274
- canvasContext.fillStyle = highlightColor;
1275
1297
  for (let line = startLineNumber; line <= endLineNumber; line++) {
1276
1298
  if (highlightedLines.has(line)) {
1277
1299
  continue;
1278
1300
  }
1279
1301
  highlightedLines.set(line, true);
1280
1302
  const y = layout.getYForLineNumber(line, minimapLineHeight);
1281
- canvasContext.fillRect(MINIMAP_GUTTER_WIDTH, y, canvasContext.canvas.width, minimapLineHeight);
1303
+ frame.fillRect(highlightColor, MINIMAP_GUTTER_WIDTH, y, canvasInnerWidth, minimapLineHeight);
1282
1304
  }
1283
1305
  }
1284
1306
  }
1285
- _renderSelectionsHighlights(canvasContext, selections, lineOffsetMap, layout, lineHeight, tabSize, characterWidth, canvasInnerWidth) {
1307
+ _renderSelectionsHighlights(frame, selections, lineOffsetMap, layout, lineHeight, tabSize, characterWidth, canvasInnerWidth) {
1286
1308
  if (!this._selectionColor || this._selectionColor.isTransparent()) {
1287
1309
  return;
1288
1310
  }
@@ -1294,11 +1316,11 @@ class InnerMinimap extends Disposable {
1294
1316
  }
1295
1317
  const [startLineNumber, endLineNumber] = intersection;
1296
1318
  for (let line = startLineNumber; line <= endLineNumber; line++) {
1297
- this.renderDecorationOnLine(canvasContext, lineOffsetMap, selection, this._selectionColor, layout, line, lineHeight, lineHeight, tabSize, characterWidth, canvasInnerWidth);
1319
+ this.renderDecorationOnLine(frame, lineOffsetMap, selection, this._selectionColor, layout, line, lineHeight, lineHeight, tabSize, characterWidth, canvasInnerWidth);
1298
1320
  }
1299
1321
  }
1300
1322
  }
1301
- _renderDecorationsHighlights(canvasContext, decorations, lineOffsetMap, layout, minimapLineHeight, tabSize, characterWidth, canvasInnerWidth) {
1323
+ _renderDecorationsHighlights(frame, decorations, lineOffsetMap, layout, minimapLineHeight, tabSize, characterWidth, canvasInnerWidth) {
1302
1324
  // Loop forwards to hit first decorations with lower `zIndex`
1303
1325
  for (const decoration of decorations) {
1304
1326
  const minimapOptions = decoration.options.minimap;
@@ -1318,19 +1340,19 @@ class InnerMinimap extends Disposable {
1318
1340
  for (let line = startLineNumber; line <= endLineNumber; line++) {
1319
1341
  switch (minimapOptions.position) {
1320
1342
  case 1 /* MinimapPosition.Inline */:
1321
- this.renderDecorationOnLine(canvasContext, lineOffsetMap, decoration.range, decorationColor, layout, line, minimapLineHeight, minimapLineHeight, tabSize, characterWidth, canvasInnerWidth);
1343
+ this.renderDecorationOnLine(frame, lineOffsetMap, decoration.range, decorationColor, layout, line, minimapLineHeight, minimapLineHeight, tabSize, characterWidth, canvasInnerWidth);
1322
1344
  continue;
1323
1345
  case 2 /* MinimapPosition.Gutter */: {
1324
1346
  const y = layout.getYForLineNumber(line, minimapLineHeight);
1325
1347
  const x = 2;
1326
- this.renderDecoration(canvasContext, decorationColor, x, y, GUTTER_DECORATION_WIDTH, minimapLineHeight);
1348
+ this.renderDecoration(frame, decorationColor, x, y, GUTTER_DECORATION_WIDTH, minimapLineHeight);
1327
1349
  continue;
1328
1350
  }
1329
1351
  }
1330
1352
  }
1331
1353
  }
1332
1354
  }
1333
- renderDecorationOnLine(canvasContext, lineOffsetMap, decorationRange, decorationColor, layout, lineNumber, height, minimapLineHeight, tabSize, charWidth, canvasInnerWidth) {
1355
+ renderDecorationOnLine(frame, lineOffsetMap, decorationRange, decorationColor, layout, lineNumber, height, minimapLineHeight, tabSize, charWidth, canvasInnerWidth) {
1334
1356
  const y = layout.getYForLineNumber(lineNumber, minimapLineHeight);
1335
1357
  // Skip rendering the line if it's vertically outside our viewport
1336
1358
  if (y + height < 0 || y > this._model.options.canvasInnerHeight) {
@@ -1341,7 +1363,7 @@ class InnerMinimap extends Disposable {
1341
1363
  const endColumn = (endLineNumber === lineNumber ? decorationRange.endColumn : this._model.getLineMaxColumn(lineNumber));
1342
1364
  const x1 = this.getXOffsetForPosition(lineOffsetMap, lineNumber, startColumn, tabSize, charWidth, canvasInnerWidth);
1343
1365
  const x2 = this.getXOffsetForPosition(lineOffsetMap, lineNumber, endColumn, tabSize, charWidth, canvasInnerWidth);
1344
- this.renderDecoration(canvasContext, decorationColor, x1, y, x2 - x1, height);
1366
+ this.renderDecoration(frame, decorationColor, x1, y, x2 - x1, height);
1345
1367
  }
1346
1368
  getXOffsetForPosition(lineOffsetMap, lineNumber, column, tabSize, charWidth, canvasInnerWidth) {
1347
1369
  if (column === 1) {
@@ -1383,11 +1405,12 @@ class InnerMinimap extends Disposable {
1383
1405
  // goes over the canvas width
1384
1406
  return canvasInnerWidth;
1385
1407
  }
1386
- renderDecoration(canvasContext, decorationColor, x, y, width, height) {
1387
- canvasContext.fillStyle = decorationColor && decorationColor.toString() || '';
1388
- canvasContext.fillRect(x, y, width, height);
1408
+ renderDecoration(frame, decorationColor, x, y, width, height) {
1409
+ if (decorationColor) {
1410
+ frame.fillRect(decorationColor.toString(), x, y, width, height);
1411
+ }
1389
1412
  }
1390
- _renderSectionHeaders(layout) {
1413
+ _renderSectionHeaders(frame, canvasContext, layout) {
1391
1414
  const minimapLineHeight = this._model.options.minimapLineHeight;
1392
1415
  const sectionHeaderFontSize = this._model.options.sectionHeaderFontSize;
1393
1416
  const sectionHeaderLetterSpacing = this._model.options.sectionHeaderLetterSpacing;
@@ -1401,13 +1424,19 @@ class InnerMinimap extends Disposable {
1401
1424
  const foregroundColor = this._model.options.sectionHeaderFontColor;
1402
1425
  const foregroundFill = `rgb(${foregroundColor.r} ${foregroundColor.g} ${foregroundColor.b})`;
1403
1426
  const separatorStroke = foregroundFill;
1404
- const canvasContext = this._decorationsCanvas.domNode.getContext('2d');
1405
- canvasContext.letterSpacing = sectionHeaderLetterSpacing + 'px';
1406
- canvasContext.font = '500 ' + sectionHeaderFontSize + 'px ' + this._model.options.sectionHeaderFontFamily;
1407
- canvasContext.strokeStyle = separatorStroke;
1408
- canvasContext.lineWidth = 0.4;
1427
+ const letterSpacing = sectionHeaderLetterSpacing + 'px';
1428
+ const font = '500 ' + sectionHeaderFontSize + 'px ' + this._model.options.sectionHeaderFontFamily;
1429
+ const style = `${letterSpacing}:${font}:${backgroundFill}:${foregroundFill}:${horizontalScale}:${labelAreaWidth}`;
1430
+ const setStyle = (target) => {
1431
+ target.letterSpacing = letterSpacing;
1432
+ target.font = font;
1433
+ target.strokeStyle = separatorStroke;
1434
+ target.lineWidth = 0.4;
1435
+ target.scale(horizontalScale, 1);
1436
+ };
1437
+ // Measure the labels with the style they are drawn with
1409
1438
  canvasContext.save();
1410
- canvasContext.scale(horizontalScale, 1);
1439
+ setStyle(canvasContext);
1411
1440
  const decorations = this._model.getSectionHeaderDecorationsInViewport(layout.startLineNumber, layout.endLineNumber);
1412
1441
  decorations.sort((a, b) => a.range.startLineNumber - b.range.startLineNumber);
1413
1442
  const fitWidth = InnerMinimap._fitSectionHeader.bind(null, canvasContext, labelAreaWidth - MINIMAP_GUTTER_WIDTH);
@@ -1423,7 +1452,19 @@ class InnerMinimap extends Disposable {
1423
1452
  if (headerText) {
1424
1453
  nextLabelY = backgroundFillY + backgroundFillHeight;
1425
1454
  }
1426
- InnerMinimap._renderSectionLabel(canvasContext, headerText, decoration.options.minimap?.sectionHeaderStyle === 2 /* MinimapSectionHeaderStyle.Underlined */, backgroundFill, foregroundFill, labelAreaWidth, backgroundFillY, backgroundFillHeight, y, separatorY);
1455
+ const hasSeparatorLine = decoration.options.minimap?.sectionHeaderStyle === 2 /* MinimapSectionHeaderStyle.Underlined */;
1456
+ if (!headerText && !hasSeparatorLine) {
1457
+ continue;
1458
+ }
1459
+ // Glyphs can reach out of the label background, so give the label some room
1460
+ const top = backgroundFillY - sectionHeaderFontSize;
1461
+ const bottom = backgroundFillY + backgroundFillHeight + sectionHeaderFontSize;
1462
+ frame.add(top, bottom - top, `label:${style}:${hasSeparatorLine}:${headerText}`, false, target => {
1463
+ target.save();
1464
+ setStyle(target);
1465
+ InnerMinimap._renderSectionLabel(target, headerText, hasSeparatorLine, backgroundFill, foregroundFill, labelAreaWidth, backgroundFillY, backgroundFillHeight, y, separatorY);
1466
+ target.restore();
1467
+ });
1427
1468
  }
1428
1469
  canvasContext.restore();
1429
1470
  }