@codingame/monaco-vscode-api 4.1.2 → 4.2.1

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.
package/README.md CHANGED
@@ -238,6 +238,8 @@ Additionally, several packages that include the VSCode version of some services
238
238
  - Update detection, release notes...
239
239
  - **Localization**
240
240
  - Register callbacks to update the display language from the VSCode UI (either from the `Set Display Language` command or from the extension gallery extension packs)
241
+ - **Secret Storage**
242
+ - Storage of secrets for extensions, will store by default in-memory. You can pass a custom implementation as part of the workbench construction options when initializing monaco services (under `secretStorageProvider`).
241
243
 
242
244
  Usage:
243
245
 
package/api.js CHANGED
@@ -29,7 +29,7 @@ function createProxy(key) {
29
29
  });
30
30
  }
31
31
  const api = {
32
- version: "1.88.0",
32
+ version: "1.88.1",
33
33
  tasks: createProxy('tasks'),
34
34
  notebooks: createProxy('notebooks'),
35
35
  scm: createProxy('scm'),
package/extensions.js CHANGED
@@ -10,8 +10,9 @@ import { parse } from './vscode/src/vs/base/common/json.js';
10
10
  import { IFileService } from './vscode/src/vs/platform/files/common/files.js';
11
11
  import { IInstantiationService } from './vscode/src/vs/platform/instantiation/common/instantiation.js';
12
12
  import { IWorkbenchExtensionEnablementService } from './vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement.js';
13
+ import { StandaloneServices } from './vscode/src/vs/editor/standalone/browser/standaloneServices.js';
13
14
  import { CustomSchemas, registerExtensionFile } from '@codingame/monaco-vscode-files-service-override';
14
- import { getService } from './services.js';
15
+ import { waitServicesReady } from './lifecycle.js';
15
16
  import { ExtensionManifestTranslator } from './tools/l10n.js';
16
17
  import { throttle, memoized } from './tools.js';
17
18
  import { setDefaultApi } from './api.js';
@@ -38,12 +39,14 @@ function registerExtensionFileUrl(extensionLocation, filePath, url, mimeType) {
38
39
  return fileDisposable;
39
40
  }
40
41
  const deltaExtensions = throttle(async ({ toAdd, toRemove }) => {
41
- const extensionService = await getService(IExtensionService);
42
+ await waitServicesReady();
43
+ const extensionService = StandaloneServices.get(IExtensionService);
42
44
  await extensionService.deltaExtensions(toAdd, toRemove);
43
45
  }, (a, b) => ({ toAdd: [...a.toAdd, ...b.toAdd], toRemove: [...a.toRemove, ...b.toRemove] }), 0);
44
46
  async function registerRemoteExtension(directory) {
45
- const fileService = await getService(IFileService);
46
- const remoteAuthority = (await getService(IWorkbenchEnvironmentService)).remoteAuthority;
47
+ await waitServicesReady();
48
+ const fileService = StandaloneServices.get(IFileService);
49
+ const remoteAuthority = StandaloneServices.get(IWorkbenchEnvironmentService).remoteAuthority;
47
50
  const content = await fileService.readFile(joinPath(( URI.from(
48
51
  { scheme: Schemas.vscodeRemote, authority: remoteAuthority, path: directory }
49
52
  )), 'package.json'));
@@ -62,12 +65,13 @@ function registerExtension(manifest, extHostKind, { path = '/', system = false,
62
65
  const id = getExtensionId(manifest.publisher, manifest.name);
63
66
  const location = ( URI.from({ scheme: CustomSchemas.extensionFile, authority: id, path }));
64
67
  const addExtensionPromise = (async () => {
65
- const remoteAuthority = (await getService(IWorkbenchEnvironmentService)).remoteAuthority;
68
+ await waitServicesReady();
69
+ const remoteAuthority = StandaloneServices.get(IWorkbenchEnvironmentService).remoteAuthority;
66
70
  let realLocation = location;
67
71
  if (extHostKind === 3 ) {
68
72
  realLocation = ( URI.from({ scheme: Schemas.vscodeRemote, authority: remoteAuthority, path }));
69
73
  }
70
- const instantiationService = await getService(IInstantiationService);
74
+ const instantiationService = StandaloneServices.get(IInstantiationService);
71
75
  const translator = instantiationService.createInstance(ExtensionManifestTranslator);
72
76
  const localizedManifest = await translator.translateManifest(realLocation, manifest);
73
77
  const extension = {
@@ -89,7 +93,7 @@ function registerExtension(manifest, extHostKind, { path = '/', system = false,
89
93
  if (extHostKind !== 3 ) {
90
94
  extensions.push(extension);
91
95
  }
92
- const extensionEnablementService = await getService(IWorkbenchExtensionEnablementService);
96
+ const extensionEnablementService = StandaloneServices.get(IWorkbenchExtensionEnablementService);
93
97
  if (extensionEnablementService.isEnabled(extension)) {
94
98
  await deltaExtensions({ toAdd: [extension], toRemove: [] });
95
99
  }
@@ -101,7 +105,8 @@ function registerExtension(manifest, extHostKind, { path = '/', system = false,
101
105
  await addExtensionPromise;
102
106
  },
103
107
  async isEnabled() {
104
- const extensionEnablementService = await getService(IWorkbenchExtensionEnablementService);
108
+ await waitServicesReady();
109
+ const extensionEnablementService = StandaloneServices.get(IWorkbenchExtensionEnablementService);
105
110
  const extension = await addExtensionPromise;
106
111
  return extensionEnablementService.isEnabled(extension);
107
112
  },
@@ -565,8 +565,8 @@ registerSingleton(IPathService, class PathService {
565
565
  registerSingleton(IProductService, class ProductService {
566
566
  constructor() {
567
567
  this._serviceBrand = undefined;
568
- this.version = "1.88.0";
569
- this.commit = "5c3e652f63e798a5ac2f31ffd0d863669328dc4c";
568
+ this.version = "1.88.1";
569
+ this.commit = "e170252f762678dec6ca2cc69aba1570769a5d39";
570
570
  this.quality = 'oss';
571
571
  this.nameShort = 'Code - OSS Dev';
572
572
  this.nameLong = 'Code - OSS Dev';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-api",
3
- "version": "4.1.2",
3
+ "version": "4.2.1",
4
4
  "description": "VSCode public API plugged on the monaco editor",
5
5
  "keywords": [],
6
6
  "author": {
@@ -94,12 +94,12 @@
94
94
  }
95
95
  },
96
96
  "dependencies": {
97
- "@codingame/monaco-vscode-quickaccess-service-override": "4.1.2",
98
- "@codingame/monaco-vscode-files-service-override": "4.1.2",
99
- "@codingame/monaco-vscode-extensions-service-override": "4.1.2",
100
- "@codingame/monaco-vscode-environment-service-override": "4.1.2",
101
- "@codingame/monaco-vscode-layout-service-override": "4.1.2",
102
- "@codingame/monaco-vscode-host-service-override": "4.1.2",
103
- "@codingame/monaco-vscode-base-service-override": "4.1.2"
97
+ "@codingame/monaco-vscode-files-service-override": "4.2.1",
98
+ "@codingame/monaco-vscode-quickaccess-service-override": "4.2.1",
99
+ "@codingame/monaco-vscode-extensions-service-override": "4.2.1",
100
+ "@codingame/monaco-vscode-environment-service-override": "4.2.1",
101
+ "@codingame/monaco-vscode-layout-service-override": "4.2.1",
102
+ "@codingame/monaco-vscode-host-service-override": "4.2.1",
103
+ "@codingame/monaco-vscode-base-service-override": "4.2.1"
104
104
  }
105
105
  }
package/services.d.ts CHANGED
@@ -81,6 +81,8 @@ export { IExplorerService } from './vscode/src/vs/workbench/contrib/files/browse
81
81
  export { IStatusbarService } from './vscode/src/vs/workbench/services/statusbar/browser/statusbar.js';
82
82
  export { ITitleService } from './vscode/src/vs/workbench/services/title/browser/titleService.js';
83
83
  export { IBannerService } from './vscode/src/vs/workbench/services/banner/browser/bannerService.js';
84
+ export { ISecretStorageProvider, ISecretStorageService } from './vscode/src/vs/platform/secrets/common/secrets.js';
85
+ export { IProductConfiguration } from './vscode/src/vs/base/common/product.js';
84
86
 
85
87
  declare function initialize(overrides: IEditorOverrideServices, container?: HTMLElement, configuration?: IWorkbenchConstructionOptions, env?: EnvironmentOverride): Promise<void>;
86
88
  declare function getService<T>(identifier: ServiceIdentifier<T>): Promise<T>;
package/services.js CHANGED
@@ -146,15 +146,16 @@ export { ITitleService } from './vscode/src/vs/workbench/services/title/browser/
146
146
  export { IBannerService } from './vscode/src/vs/workbench/services/banner/browser/bannerService.js';
147
147
  export { IWorkspaceTrustEnablementService, IWorkspaceTrustManagementService, IWorkspaceTrustRequestService } from './vscode/src/vs/platform/workspace/common/workspaceTrust.js';
148
148
  export { IKeybindingService } from './vscode/src/vs/platform/keybinding/common/keybinding.js';
149
+ export { ISecretStorageService } from './vscode/src/vs/platform/secrets/common/secrets.js';
149
150
  export { IDialogService, IFileDialogService } from './vscode/src/vs/platform/dialogs/common/dialogs.js';
150
151
  async function initialize(overrides, container = document.body, configuration = {}, env) {
151
152
  checkServicesNotInitialized();
152
153
  initialize$1(container, configuration, env);
153
154
  const instantiationService = StandaloneServices.initialize({
154
155
  [( IProductService.toString())]: mixin({
155
- version: "1.88.0",
156
+ version: "1.88.1",
156
157
  quality: 'stable',
157
- commit: "5c3e652f63e798a5ac2f31ffd0d863669328dc4c",
158
+ commit: "e170252f762678dec6ca2cc69aba1570769a5d39",
158
159
  nameShort: 'Code - OSS',
159
160
  nameLong: 'Code - OSS',
160
161
  applicationName: 'code-oss',
@@ -101,7 +101,7 @@ class DomListener {
101
101
  }
102
102
  }
103
103
  function addDisposableListener(node, type, handler, useCaptureOrOptions) {
104
- return ( new DomListener(node, type, handler, useCaptureOrOptions));
104
+ return new DomListener(node, type, handler, useCaptureOrOptions);
105
105
  }
106
106
  function _wrapAsStandardMouseEvent(targetWindow, handler) {
107
107
  return function (e) {
@@ -134,6 +134,9 @@ const addStandardDisposableGenericMouseUpListener = function addStandardDisposab
134
134
  function addDisposableGenericMouseDownListener(node, handler, useCapture) {
135
135
  return addDisposableListener(node, isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_DOWN : EventType.MOUSE_DOWN, handler, useCapture);
136
136
  }
137
+ function addDisposableGenericMouseMoveListener(node, handler, useCapture) {
138
+ return addDisposableListener(node, isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_MOVE : EventType.MOUSE_MOVE, handler, useCapture);
139
+ }
137
140
  function addDisposableGenericMouseUpListener(node, handler, useCapture) {
138
141
  return addDisposableListener(node, isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_UP : EventType.MOUSE_UP, handler, useCapture);
139
142
  }
@@ -1537,4 +1540,4 @@ function trackAttributes(from, to, filter) {
1537
1540
  }));
1538
1541
  return disposables;
1539
1542
  }
1540
- export { $, DetectedFullscreenMode, Dimension, DragAndDropObserver, EventHelper, EventType, ModifierKeyEmitter, Namespace, WindowIdleValue, WindowIntervalTimer, addDisposableGenericMouseDownListener, addDisposableGenericMouseUpListener, addDisposableListener, addDisposableThrottledListener, addStandardDisposableGenericMouseDownListener, addStandardDisposableGenericMouseUpListener, addStandardDisposableListener, after, animate, append, asCSSPropertyValue, asCSSUrl, asCssValueWithDefault, basicMarkupHtmlTags, clearNode, cloneGlobalStylesheets, computeScreenAwareSize, copyAttributes, createCSSRule, createLinkElement, createMetaElement, createStyleSheet, createStyleSheet2, detectFullscreen, disposableWindowInterval, finalHandler, findParentWithClass, getActiveDocument, getActiveElement, getActiveWindow, getClientArea, getComputedStyle, getContentHeight, getContentWidth, getDocument, getDomNodePagePosition, getDomNodeZoomLevel, getLargestChildWidth, getShadowRoot, getTopLeftOffset, getTotalHeight, getTotalScrollWidth, getTotalWidth, getWindow, getWindowById, getWindowId, getWindows, getWindowsCount, h, hasParentWithClass, hasWindow, hide, hookDomPurifyHrefAndSrcSanitizer, isActiveDocument, isActiveElement, isAncestor, isAncestorOfActiveElement, isAncestorUsingFlowTo, isDragEvent, isEventLike, isGlobalStylesheet, isInShadowDOM, isKeyboardEvent, isMouseEvent, isPointerEvent, isShadowRoot, measure, modify, multibyteAwareBtoa, onDidRegisterWindow, onDidUnregisterWindow, onWillUnregisterWindow, position, prepend, registerWindow, removeCSSRulesContainingSelector, reset, restoreParentsScrollTop, runAtThisOrScheduleAtNextAnimationFrame, runWhenWindowIdle, safeInnerHtml, saveParentsScrollTop, scheduleAtNextAnimationFrame, setParentFlowTo, setVisibility, sharedMutationObserver, show, size, trackAttributes, trackFocus, triggerDownload, triggerUpload, windowOpenNoOpener, windowOpenPopup, windowOpenWithSuccess };
1543
+ export { $, DetectedFullscreenMode, Dimension, DragAndDropObserver, EventHelper, EventType, ModifierKeyEmitter, Namespace, WindowIdleValue, WindowIntervalTimer, addDisposableGenericMouseDownListener, addDisposableGenericMouseMoveListener, addDisposableGenericMouseUpListener, addDisposableListener, addDisposableThrottledListener, addStandardDisposableGenericMouseDownListener, addStandardDisposableGenericMouseUpListener, addStandardDisposableListener, after, animate, append, asCSSPropertyValue, asCSSUrl, asCssValueWithDefault, basicMarkupHtmlTags, clearNode, cloneGlobalStylesheets, computeScreenAwareSize, copyAttributes, createCSSRule, createLinkElement, createMetaElement, createStyleSheet, createStyleSheet2, detectFullscreen, disposableWindowInterval, finalHandler, findParentWithClass, getActiveDocument, getActiveElement, getActiveWindow, getClientArea, getComputedStyle, getContentHeight, getContentWidth, getDocument, getDomNodePagePosition, getDomNodeZoomLevel, getLargestChildWidth, getShadowRoot, getTopLeftOffset, getTotalHeight, getTotalScrollWidth, getTotalWidth, getWindow, getWindowById, getWindowId, getWindows, getWindowsCount, h, hasParentWithClass, hasWindow, hide, hookDomPurifyHrefAndSrcSanitizer, isActiveDocument, isActiveElement, isAncestor, isAncestorOfActiveElement, isAncestorUsingFlowTo, isDragEvent, isEventLike, isGlobalStylesheet, isInShadowDOM, isKeyboardEvent, isMouseEvent, isPointerEvent, isShadowRoot, measure, modify, multibyteAwareBtoa, onDidRegisterWindow, onDidUnregisterWindow, onWillUnregisterWindow, position, prepend, registerWindow, removeCSSRulesContainingSelector, reset, restoreParentsScrollTop, runAtThisOrScheduleAtNextAnimationFrame, runWhenWindowIdle, safeInnerHtml, saveParentsScrollTop, scheduleAtNextAnimationFrame, setParentFlowTo, setVisibility, sharedMutationObserver, show, size, trackAttributes, trackFocus, triggerDownload, triggerUpload, windowOpenNoOpener, windowOpenPopup, windowOpenWithSuccess };
@@ -5,7 +5,7 @@ import { SmoothScrollableElement } from '../scrollbar/scrollableElement.js';
5
5
  import { range, pushToStart, pushToEnd } from '../../../common/arrays.js';
6
6
  import { Color } from '../../../common/color.js';
7
7
  import { Emitter, Event } from '../../../common/event.js';
8
- import { Disposable, dispose, combinedDisposable, toDisposable } from '../../../common/lifecycle.js';
8
+ import { Disposable, combinedDisposable, dispose, toDisposable } from '../../../common/lifecycle.js';
9
9
  import { clamp } from '../../../common/numbers.js';
10
10
  import { Scrollable } from '../../../common/scrollable.js';
11
11
  import { isUndefined } from '../../../common/types.js';
@@ -50,8 +50,8 @@ let DiffEditorWidget = class DiffEditorWidget extends DelegatingEditor {
50
50
  this._editorProgressService = _editorProgressService;
51
51
  this.elements = h('div.monaco-diff-editor.side-by-side', { style: { position: 'relative', height: '100%' } }, [
52
52
  h('div.noModificationsOverlay@overlay', { style: { position: 'absolute', height: '100%', visibility: 'hidden', } }, [$('span', {}, 'No Changes')]),
53
- h('div.editor.original@original', { style: { position: 'absolute', height: '100%', zIndex: '1', } }),
54
- h('div.editor.modified@modified', { style: { position: 'absolute', height: '100%', zIndex: '1', } }),
53
+ h('div.editor.original@original', { style: { position: 'absolute', height: '100%', } }),
54
+ h('div.editor.modified@modified', { style: { position: 'absolute', height: '100%', } }),
55
55
  h('div.accessibleDiffViewer@accessibleDiffViewer', { style: { position: 'absolute', height: '100%' } }),
56
56
  ]);
57
57
  this._diffModel = observableValue(this, undefined);
@@ -6,7 +6,7 @@ import { derived } from '../../../../../base/common/observableInternal/derived.j
6
6
  import { autorun, autorunWithStore } from '../../../../../base/common/observableInternal/autorun.js';
7
7
  import { observableFromEvent } from '../../../../../base/common/observableInternal/utils.js';
8
8
  import '../../../../../base/common/cancellation.js';
9
- import { appendRemoveOnDispose, applyStyle } from '../utils.js';
9
+ import { prependRemoveOnDispose, applyStyle, appendRemoveOnDispose } from '../utils.js';
10
10
  import { EditorGutter } from '../utils/editorGutter.js';
11
11
  import { ActionRunnerWithContext } from '../../multiDiffEditor/utils.js';
12
12
  import { LineRangeSet, LineRange } from '../../../../common/core/lineRange.js';
@@ -34,7 +34,7 @@ let DiffEditorGutter = class DiffEditorGutter extends Disposable {
34
34
  this._actions = observableFromEvent(this._menu.onDidChange, () => this._menu.getActions());
35
35
  this._hasActions = ( this._actions.map(a => a.length > 0));
36
36
  this.width = derived(this, reader => this._hasActions.read(reader) ? width : 0);
37
- this.elements = h('div.gutter@gutter', { style: { position: 'absolute', height: '100%', width: width + 'px', zIndex: '0' } }, []);
37
+ this.elements = h('div.gutter@gutter', { style: { position: 'absolute', height: '100%', width: width + 'px' } }, []);
38
38
  this._currentDiff = derived(this, (reader) => {
39
39
  const model = this._diffModel.read(reader);
40
40
  if (!model) {
@@ -68,7 +68,7 @@ let DiffEditorGutter = class DiffEditorGutter extends Disposable {
68
68
  }
69
69
  return result;
70
70
  });
71
- this._register(appendRemoveOnDispose(diffEditorRoot, this.elements.root));
71
+ this._register(prependRemoveOnDispose(diffEditorRoot, this.elements.root));
72
72
  this._register(addDisposableListener(this.elements.root, 'click', () => {
73
73
  this._editors.modified.focus();
74
74
  }));
@@ -274,6 +274,7 @@ class CollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {
274
274
  }
275
275
  }
276
276
  }));
277
+ const editor = this._editor;
277
278
  this._register(addDisposableListener(this._nodes.top, 'mousedown', e => {
278
279
  if (e.button !== 0) {
279
280
  return;
@@ -281,9 +282,29 @@ class CollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {
281
282
  this._nodes.top.classList.toggle('dragging', true);
282
283
  this._nodes.root.classList.toggle('dragging', true);
283
284
  e.preventDefault();
284
- this._unchangedRegion.visibleLineCountTop.get();
285
+ const startTop = e.clientY;
286
+ let didMove = false;
287
+ const cur = this._unchangedRegion.visibleLineCountTop.get();
285
288
  this._unchangedRegion.isDragged.set('top', undefined);
286
- getWindow(this._nodes.top);
289
+ const window = getWindow(this._nodes.top);
290
+ const mouseMoveListener = addDisposableListener(window, 'mousemove', e => {
291
+ const currentTop = e.clientY;
292
+ const delta = currentTop - startTop;
293
+ didMove = didMove || Math.abs(delta) > 2;
294
+ const lineDelta = Math.round(delta / editor.getOption(67 ));
295
+ const newVal = Math.max(0, Math.min(cur + lineDelta, this._unchangedRegion.getMaxVisibleLineCountTop()));
296
+ this._unchangedRegion.visibleLineCountTop.set(newVal, undefined);
297
+ });
298
+ const mouseUpListener = addDisposableListener(window, 'mouseup', e => {
299
+ if (!didMove) {
300
+ this._unchangedRegion.showMoreAbove(this._options.hideUnchangedRegionsRevealLineCount.get(), undefined);
301
+ }
302
+ this._nodes.top.classList.toggle('dragging', false);
303
+ this._nodes.root.classList.toggle('dragging', false);
304
+ this._unchangedRegion.isDragged.set(undefined, undefined);
305
+ mouseMoveListener.dispose();
306
+ mouseUpListener.dispose();
307
+ });
287
308
  }));
288
309
  this._register(addDisposableListener(this._nodes.bottom, 'mousedown', e => {
289
310
  if (e.button !== 0) {
@@ -292,9 +313,39 @@ class CollapsedCodeOverlayWidget extends ViewZoneOverlayWidget {
292
313
  this._nodes.bottom.classList.toggle('dragging', true);
293
314
  this._nodes.root.classList.toggle('dragging', true);
294
315
  e.preventDefault();
295
- this._unchangedRegion.visibleLineCountBottom.get();
316
+ const startTop = e.clientY;
317
+ let didMove = false;
318
+ const cur = this._unchangedRegion.visibleLineCountBottom.get();
296
319
  this._unchangedRegion.isDragged.set('bottom', undefined);
297
- getWindow(this._nodes.bottom);
320
+ const window = getWindow(this._nodes.bottom);
321
+ const mouseMoveListener = addDisposableListener(window, 'mousemove', e => {
322
+ const currentTop = e.clientY;
323
+ const delta = currentTop - startTop;
324
+ didMove = didMove || Math.abs(delta) > 2;
325
+ const lineDelta = Math.round(delta / editor.getOption(67 ));
326
+ const newVal = Math.max(0, Math.min(cur - lineDelta, this._unchangedRegion.getMaxVisibleLineCountBottom()));
327
+ const top = this._unchangedRegionRange.endLineNumberExclusive > editor.getModel().getLineCount()
328
+ ? editor.getContentHeight()
329
+ : editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);
330
+ this._unchangedRegion.visibleLineCountBottom.set(newVal, undefined);
331
+ const top2 = this._unchangedRegionRange.endLineNumberExclusive > editor.getModel().getLineCount()
332
+ ? editor.getContentHeight()
333
+ : editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);
334
+ editor.setScrollTop(editor.getScrollTop() + (top2 - top));
335
+ });
336
+ const mouseUpListener = addDisposableListener(window, 'mouseup', e => {
337
+ this._unchangedRegion.isDragged.set(undefined, undefined);
338
+ if (!didMove) {
339
+ const top = editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);
340
+ this._unchangedRegion.showMoreBelow(this._options.hideUnchangedRegionsRevealLineCount.get(), undefined);
341
+ const top2 = editor.getTopForLineNumber(this._unchangedRegionRange.endLineNumberExclusive);
342
+ editor.setScrollTop(editor.getScrollTop() + (top2 - top));
343
+ }
344
+ this._nodes.bottom.classList.toggle('dragging', false);
345
+ this._nodes.root.classList.toggle('dragging', false);
346
+ mouseMoveListener.dispose();
347
+ mouseUpListener.dispose();
348
+ });
298
349
  }));
299
350
  this._register(autorun(reader => {
300
351
  const children = [];
@@ -69,6 +69,12 @@ function appendRemoveOnDispose(parent, child) {
69
69
  parent.removeChild(child);
70
70
  });
71
71
  }
72
+ function prependRemoveOnDispose(parent, child) {
73
+ parent.prepend(child);
74
+ return toDisposable(() => {
75
+ parent.removeChild(child);
76
+ });
77
+ }
72
78
  class ObservableElementSizeObserver extends Disposable {
73
79
  get width() { return this._width; }
74
80
  get height() { return this._height; }
@@ -341,4 +347,4 @@ function filterWithPrevious(arr, filter) {
341
347
  return result;
342
348
  });
343
349
  }
344
- export { DisposableCancellationTokenSource, ManagedOverlayWidget, ObservableElementSizeObserver, PlaceholderViewZone, ViewZoneOverlayWidget, animatedObservable, appendRemoveOnDispose, applyObservableDecorations, applyStyle, applyViewZones, bindContextKey, filterWithPrevious, joinCombine, observeHotReloadableExports, readHotReloadableExport, translatePosition };
350
+ export { DisposableCancellationTokenSource, ManagedOverlayWidget, ObservableElementSizeObserver, PlaceholderViewZone, ViewZoneOverlayWidget, animatedObservable, appendRemoveOnDispose, applyObservableDecorations, applyStyle, applyViewZones, bindContextKey, filterWithPrevious, joinCombine, observeHotReloadableExports, prependRemoveOnDispose, readHotReloadableExport, translatePosition };
@@ -203,6 +203,14 @@ class SaturationBox extends Disposable {
203
203
  this.onDidChangePosition(e.offsetX, e.offsetY);
204
204
  }
205
205
  this.monitor.startMonitoring(e.target, e.pointerId, e.buttons, event => this.onDidChangePosition(event.pageX - origin.left, event.pageY - origin.top), () => null);
206
+ const pointerUpListener = addDisposableListener(e.target.ownerDocument, EventType.POINTER_UP, () => {
207
+ this._onColorFlushed.fire();
208
+ pointerUpListener.dispose();
209
+ if (this.monitor) {
210
+ this.monitor.stopMonitoring(true);
211
+ this.monitor = null;
212
+ }
213
+ }, true);
206
214
  }
207
215
  onDidChangePosition(left, top) {
208
216
  const s = Math.max(0, Math.min(1, left / this.width));
@@ -293,6 +301,12 @@ class Strip extends Disposable {
293
301
  this.onDidChangeTop(e.offsetY);
294
302
  }
295
303
  monitor.startMonitoring(e.target, e.pointerId, e.buttons, event => this.onDidChangeTop(event.pageY - origin.top), () => null);
304
+ const pointerUpListener = addDisposableListener(e.target.ownerDocument, EventType.POINTER_UP, () => {
305
+ this._onColorFlushed.fire();
306
+ pointerUpListener.dispose();
307
+ monitor.stopMonitoring(true);
308
+ this.domNode.classList.remove('grabbing');
309
+ }, true);
296
310
  }
297
311
  onDidChangeTop(top) {
298
312
  const value = Math.max(0, Math.min(1, 1 - (top / this.height)));
@@ -1,3 +1,6 @@
1
+ import { ServiceIdentifier } from '../../instantiation/common/instantiation.js';
2
+ import { Event } from '../../../base/common/event.js';
3
+
1
4
  interface ISecretStorageProvider {
2
5
  type: 'in-memory' | 'persisted' | 'unknown';
3
6
  get(key: string): Promise<string | undefined>;
@@ -5,4 +8,10 @@ interface ISecretStorageProvider {
5
8
  delete(key: string): Promise<void>;
6
9
  }
7
10
 
8
- export type { ISecretStorageProvider };
11
+ declare const ISecretStorageService: ServiceIdentifier<ISecretStorageService>;
12
+ interface ISecretStorageService extends ISecretStorageProvider {
13
+ readonly _serviceBrand: undefined;
14
+ onDidChangeSecret: Event<string>;
15
+ }
16
+
17
+ export { type ISecretStorageProvider, ISecretStorageService };
@@ -1,8 +1,127 @@
1
- import '../../../base/common/async.js';
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { SequencerByKey } from '../../../base/common/async.js';
3
+ import { IEncryptionService } from '../../encryption/common/encryptionService.js';
2
4
  import { createDecorator } from '../../instantiation/common/instantiation.js';
3
- import '../../storage/common/storage.js';
4
- import '../../../base/common/event.js';
5
- import '../../log/common/log.js';
6
- import '../../../base/common/lifecycle.js';
5
+ import { InMemoryStorageService, IStorageService } from '../../storage/common/storage.js';
6
+ import { Emitter } from '../../../base/common/event.js';
7
+ import { ILogService } from '../../log/common/log.js';
8
+ import { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';
9
+ import { Lazy } from '../../../base/common/lazy.js';
7
10
  const ISecretStorageService = ( createDecorator('secretStorageService'));
8
- export { ISecretStorageService };
11
+ let BaseSecretStorageService = class BaseSecretStorageService extends Disposable {
12
+ constructor(_useInMemoryStorage, _storageService, _encryptionService, _logService) {
13
+ super();
14
+ this._useInMemoryStorage = _useInMemoryStorage;
15
+ this._storageService = _storageService;
16
+ this._encryptionService = _encryptionService;
17
+ this._logService = _logService;
18
+ this._storagePrefix = 'secret://';
19
+ this.onDidChangeSecretEmitter = this._register(( new Emitter()));
20
+ this.onDidChangeSecret = this.onDidChangeSecretEmitter.event;
21
+ this._sequencer = ( new SequencerByKey());
22
+ this._type = 'unknown';
23
+ this._onDidChangeValueDisposable = this._register(( new DisposableStore()));
24
+ this._lazyStorageService = ( new Lazy(() => this.initialize()));
25
+ }
26
+ get type() {
27
+ return this._type;
28
+ }
29
+ get resolvedStorageService() {
30
+ return this._lazyStorageService.value;
31
+ }
32
+ get(key) {
33
+ return this._sequencer.queue(key, async () => {
34
+ const storageService = await this.resolvedStorageService;
35
+ const fullKey = this.getKey(key);
36
+ this._logService.trace('[secrets] getting secret for key:', fullKey);
37
+ const encrypted = storageService.get(fullKey, -1 );
38
+ if (!encrypted) {
39
+ this._logService.trace('[secrets] no secret found for key:', fullKey);
40
+ return undefined;
41
+ }
42
+ try {
43
+ this._logService.trace('[secrets] decrypting gotten secret for key:', fullKey);
44
+ const result = this._type === 'in-memory'
45
+ ? encrypted
46
+ : await this._encryptionService.decrypt(encrypted);
47
+ this._logService.trace('[secrets] decrypted secret for key:', fullKey);
48
+ return result;
49
+ }
50
+ catch (e) {
51
+ this._logService.error(e);
52
+ this.delete(key);
53
+ return undefined;
54
+ }
55
+ });
56
+ }
57
+ set(key, value) {
58
+ return this._sequencer.queue(key, async () => {
59
+ const storageService = await this.resolvedStorageService;
60
+ this._logService.trace('[secrets] encrypting secret for key:', key);
61
+ let encrypted;
62
+ try {
63
+ encrypted = this._type === 'in-memory'
64
+ ? value
65
+ : await this._encryptionService.encrypt(value);
66
+ }
67
+ catch (e) {
68
+ this._logService.error(e);
69
+ throw e;
70
+ }
71
+ const fullKey = this.getKey(key);
72
+ this._logService.trace('[secrets] storing encrypted secret for key:', fullKey);
73
+ storageService.store(fullKey, encrypted, -1 , 1 );
74
+ this._logService.trace('[secrets] stored encrypted secret for key:', fullKey);
75
+ });
76
+ }
77
+ delete(key) {
78
+ return this._sequencer.queue(key, async () => {
79
+ const storageService = await this.resolvedStorageService;
80
+ const fullKey = this.getKey(key);
81
+ this._logService.trace('[secrets] deleting secret for key:', fullKey);
82
+ storageService.remove(fullKey, -1 );
83
+ this._logService.trace('[secrets] deleted secret for key:', fullKey);
84
+ });
85
+ }
86
+ async initialize() {
87
+ let storageService;
88
+ if (!this._useInMemoryStorage && (await this._encryptionService.isEncryptionAvailable())) {
89
+ this._logService.trace(`[SecretStorageService] Encryption is available, using persisted storage`);
90
+ this._type = 'persisted';
91
+ storageService = this._storageService;
92
+ }
93
+ else {
94
+ if (this._type === 'in-memory') {
95
+ return this._storageService;
96
+ }
97
+ this._logService.trace('[SecretStorageService] Encryption is not available, falling back to in-memory storage');
98
+ this._type = 'in-memory';
99
+ storageService = this._register(( new InMemoryStorageService()));
100
+ }
101
+ this._onDidChangeValueDisposable.clear();
102
+ this._onDidChangeValueDisposable.add(storageService.onDidChangeValue(-1 , undefined, this._onDidChangeValueDisposable)(e => {
103
+ this.onDidChangeValue(e.key);
104
+ }));
105
+ return storageService;
106
+ }
107
+ reinitialize() {
108
+ this._lazyStorageService = ( new Lazy(() => this.initialize()));
109
+ }
110
+ onDidChangeValue(key) {
111
+ if (!key.startsWith(this._storagePrefix)) {
112
+ return;
113
+ }
114
+ const secretKey = key.slice(this._storagePrefix.length);
115
+ this._logService.trace(`[SecretStorageService] Notifying change in value for secret: ${secretKey}`);
116
+ this.onDidChangeSecretEmitter.fire(secretKey);
117
+ }
118
+ getKey(key) {
119
+ return `${this._storagePrefix}${key}`;
120
+ }
121
+ };
122
+ BaseSecretStorageService = ( __decorate([
123
+ ( __param(1, IStorageService)),
124
+ ( __param(2, IEncryptionService)),
125
+ ( __param(3, ILogService))
126
+ ], BaseSecretStorageService));
127
+ export { BaseSecretStorageService, ISecretStorageService };
@@ -195,7 +195,13 @@ let NotebookCellOutlineProvider = class NotebookCellOutlineProvider {
195
195
  }
196
196
  }
197
197
  }
198
- if (newActive !== this._activeEntry) {
198
+ const showCodeCells = this._configurationService.getValue(NotebookSetting.outlineShowCodeCells);
199
+ const showCodeCellSymbols = this._configurationService.getValue(NotebookSetting.outlineShowCodeCellSymbols);
200
+ const showMarkdownHeadersOnly = this._configurationService.getValue(NotebookSetting.outlineShowMarkdownHeadersOnly);
201
+ if ((newActive !== this._activeEntry) && !((
202
+ (showMarkdownHeadersOnly && newActive?.cell.cellKind === CellKind.Markup && newActive?.level === 7) ||
203
+ (!showCodeCells && newActive?.cell.cellKind === CellKind.Code) || (!showCodeCellSymbols && newActive?.cell.cellKind === CellKind.Code && newActive?.level > 7))
204
+ )) {
199
205
  this._activeEntry = newActive;
200
206
  this._onDidChange.fire({ affectOnlyActiveElement: true });
201
207
  }